<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.10">
<meta name="description" content="ADL Workbench User Guide">
<meta name="keywords" content="ADL Workbench, archetype, template, clinical model, ADL">
<title>ADL Workbench (AWB) User Guide</title>
<link rel="stylesheet" href="https://specifications.openehr.org/styles/openehr.css">
</head>
<body class="book toc2 toc-left">
<div id="header">
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel0">
<li><a href="#_adl_workbench_awb_user_guide">ADL Workbench (AWB) User Guide</a>
<ul class="sectlevel1">
<li><a href="#_amendment_record">Amendment Record</a></li>
<li><a href="#_acknowledgements">Acknowledgements</a>
<ul class="sectlevel2">
<li><a href="#_primary_author">Primary Author</a></li>
<li><a href="#_contributors">Contributors</a></li>
<li><a href="#_trademarks">Trademarks</a></li>
</ul>
</li>
<li><a href="#_overview">1. Overview</a>
<ul class="sectlevel2">
<li><a href="#_adl_workbench_release_2_0_6">1.1. ADL Workbench release 2.0.6</a></li>
<li><a href="#_what_is_the_workbench">1.2. What is the Workbench?</a></li>
<li><a href="#_news">1.3. News</a></li>
<li><a href="#_roadmap">1.4. Roadmap</a></li>
<li><a href="#_download">1.5. Download</a></li>
<li><a href="#_learn_how_the_workbench_works">1.6. Learn how the workbench works</a></li>
<li><a href="#_source_code">1.7. Source Code</a></li>
</ul>
</li>
<li><a href="#_installation_notes">2. Installation Notes</a>
<ul class="sectlevel2">
<li><a href="#_mac_os_x">2.1. Mac OS X</a></li>
<li><a href="#_linux">2.2. Linux</a></li>
</ul>
</li>
<li><a href="#_getting_started">3. Getting Started</a>
<ul class="sectlevel2">
<li><a href="#_overview_2">3.1. Overview</a></li>
<li><a href="#_basic_configuration">3.2. Basic Configuration</a>
<ul class="sectlevel3">
<li><a href="#_setting_rm_schemas">3.2.1. Setting RM Schemas</a></li>
<li><a href="#_setting_up_archetype_repositories">3.2.2. Setting up archetype repositories</a></li>
</ul>
</li>
<li><a href="#_using_the_tool">3.3. Using the Tool</a>
<ul class="sectlevel3">
<li><a href="#_docking">3.3.1. Docking</a></li>
<li><a href="#_general_layout">3.3.2. General layout</a></li>
<li><a href="#_archetype_and_template_library">3.3.3. Archetype and Template Library</a></li>
<li><a href="#_reference_model_browser">3.3.4. Reference Model Browser</a></li>
<li><a href="#_reference_model_tool">3.3.5. Reference Model Tool</a></li>
<li><a href="#_the_address_bar">3.3.6. The Address Bar</a></li>
<li><a href="#_archetype_and_class_tool_area">3.3.7. Archetype and Class Tool area</a></li>
<li><a href="#_the_archetype_tool">3.3.8. The Archetype Tool</a></li>
<li><a href="#_the_class_tool">3.3.9. The Class Tool</a></li>
</ul>
</li>
<li><a href="#_artefact_overview">3.4. Artefact overview</a></li>
</ul>
</li>
<li><a href="#_obtaining_archetypes">4. Obtaining Archetypes</a>
<ul class="sectlevel2">
<li><a href="#_repository_and_library_configuration">4.1. Repository and Library Configuration</a></li>
</ul>
</li>
<li><a href="#_browsing_and_compiling">5. Browsing and Compiling</a>
<ul class="sectlevel2">
<li><a href="#_the_archetype_and_template_library">5.1. The Archetype and Template Library</a></li>
<li><a href="#_compiling_archetypes">5.2. Compiling archetypes</a>
<ul class="sectlevel3">
<li><a href="#_metrics_report">5.2.1. Metrics Report</a></li>
</ul>
</li>
<li><a href="#_viewing_an_archetype">5.3. Viewing an archetype</a>
<ul class="sectlevel3">
<li><a href="#_descriptive_meta_data">5.3.1. Descriptive meta-data</a></li>
<li><a href="#_source_differential_and_flat_forms">5.3.2. Source (differential) and flat forms</a></li>
<li><a href="#_node_map">5.3.3. Node map</a></li>
<li><a href="#_interface">5.3.4. Interface</a></li>
<li><a href="#_slot_map">5.3.5. Slot map</a></li>
<li><a href="#_terminology">5.3.6. Terminology</a></li>
<li><a href="#_adl_view">5.3.7. ADL view</a></li>
<li><a href="#_serialised_views_adl_odin_xml_json">5.3.8. Serialised views: ADL, ODIN, XML, JSON</a></li>
<li><a href="#_validity_report">5.3.9. Validity report</a></li>
<li><a href="#_statistics_report">5.3.10. Statistics report</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_tool_configuration">6. Tool Configuration</a>
<ul class="sectlevel2">
<li><a href="#_set_up">6.1. Set-up</a>
<ul class="sectlevel3">
<li><a href="#_rm_schema_configuration">6.1.1. RM Schema configuration</a></li>
</ul>
</li>
<li><a href="#_the_cfg_file">6.2. The .cfg file</a>
<ul class="sectlevel3">
<li><a href="#_setting_options_in_the_workbench">6.2.1. Setting options in the workbench</a></li>
<li><a href="#_location_on_various_platforms">6.2.2. Location on various Platforms</a></li>
<li><a href="#_contents">6.2.3. Contents</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_about_adl_2">7. About ADL 2</a>
<ul class="sectlevel2">
<li><a href="#_overview_3">7.1. Overview</a></li>
<li><a href="#_adlaom_2_new_features">7.2. ADL/AOM 2 - New features</a>
<ul class="sectlevel3">
<li><a href="#_meta_data_changes">7.2.1. Meta-data changes</a></li>
<li><a href="#_new_internal_coding_system">7.2.2. New internal coding system</a></li>
<li><a href="#_tuples_replace_domain_specific_syntax">7.2.3. Tuples replace domain-specific syntax</a></li>
<li><a href="#_terminology_value_set_constraints_moved_to_terminology_section">7.2.4. Terminology value-set constraints moved to terminology section</a></li>
<li><a href="#_terminology_bindings_are_uris">7.2.5. Terminology bindings are URIs</a></li>
<li><a href="#_artefact_type_marker">7.2.6. artefact_type marker</a></li>
<li><a href="#_path_based_constraints_for_specialised_archetypes_and_templates">7.2.7. Path-based constraints for specialised archetypes and templates</a></li>
<li><a href="#_before_and_after_keywords_for_item_ordering_in_containers">7.2.8. before and after keywords for item ordering in containers</a></li>
<li><a href="#_generated_marker">7.2.9. generated marker</a></li>
<li><a href="#_exclusion_of_object_constraints">7.2.10. Exclusion of object constraints</a></li>
<li><a href="#_negation_operator_for_primitive_type_exclusions_not_yet_implemented">7.2.11. Negation operator for primitive type exclusions (Not yet implemented)</a></li>
<li><a href="#_archetype_archetype_external_reference">7.2.12. Archetype - archetype external reference</a></li>
<li><a href="#_slot_redefinition_semantics_including_slot_filling">7.2.13. Slot redefinition semantics, including slot-filling</a></li>
<li><a href="#_annotations_section">7.2.14. Annotations section</a></li>
<li><a href="#_default_values_not_yet_implemented">7.2.15. Default values (Not yet implemented)</a></li>
<li><a href="#_passthrough_node_flag_not_yet_implemented">7.2.16. Passthrough node flag (Not yet implemented)</a></li>
<li><a href="#_reference_model_subtype_matching_semantics">7.2.17. Reference model subtype matching semantics</a></li>
<li><a href="#_node_congruence_conformance_semantics">7.2.18. Node congruence &amp; conformance semantics</a></li>
<li><a href="#_operational_template_object_model">7.2.19. Operational template object model</a></li>
<li><a href="#_flattening_semantics_for_operational_templates">7.2.20. Flattening semantics for operational templates</a></li>
<li><a href="#_group_construct_not_yet_implemented">7.2.21. Group construct (Not yet implemented)</a></li>
</ul>
</li>
<li><a href="#_changes">7.3. Changes</a>
<ul class="sectlevel3">
<li><a href="#_existence_and_cardinality_are_now_optional">7.3.1. Existence and cardinality are now optional</a></li>
<li><a href="#_rules_for_at_codes">7.3.2. Rules for at-codes</a></li>
<li><a href="#_invariants_and_declarations_merged_into_rules">7.3.3. Invariants and declarations merged into rules</a></li>
<li><a href="#_terminology_extract_section_added_to_ontology_not_yet_implemented">7.3.4. Terminology_extract section added to Ontology (Not yet implemented)</a></li>
<li><a href="#_representation_for_ref_set_reference_not_yet_implemented">7.3.5. Representation for ref set reference (Not yet implemented)</a></li>
<li><a href="#_semantic_slot_type_not_yet_implemented">7.3.6. Semantic slot type (Not yet implemented)</a></li>
<li><a href="#_rules_syntax_xpath_based_todo">7.3.7. Rules syntax (Xpath-based) (TODO)</a></li>
<li><a href="#_node_id_optionality">7.3.8. Node_id optionality</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_working_with_templates">8. Working with Templates</a>
<ul class="sectlevel2">
<li><a href="#_overview_4">8.1. Overview</a>
<ul class="sectlevel3">
<li><a href="#_archetypes">8.1.1. Archetypes</a></li>
<li><a href="#_templates">8.1.2. Templates</a></li>
<li><a href="#_operational_templates">8.1.3. Operational Templates</a></li>
</ul>
</li>
<li><a href="#_template_example">8.2. Template example</a></li>
</ul>
</li>
<li><a href="#_adl_command_line_tools">9. ADL Command-line Tools</a>
<ul class="sectlevel2">
<li><a href="#_adlc">9.1. adlc</a>
<ul class="sectlevel3">
<li><a href="#_overview_5">9.1.1. Overview</a></li>
<li><a href="#_environment">9.1.2. Environment</a></li>
<li><a href="#_initial_configuration">9.1.3. Initial configuration</a></li>
<li><a href="#_typical_tasks">9.1.4. Typical tasks</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_the_test_tool">10. The Test Tool</a>
<ul class="sectlevel2">
<li><a href="#_overview_6">10.1. Overview</a></li>
<li><a href="#_configuration">10.2. Configuration</a></li>
<li><a href="#_selecting_archetypes">10.3. Selecting archetypes</a></li>
<li><a href="#_what_the_tests_do">10.4. What the tests do</a></li>
<li><a href="#_regression_testing">10.5. Regression Testing</a></li>
<li><a href="#_viewing_results">10.6. Viewing results</a></li>
</ul>
</li>
<li><a href="#_iso_13606">11. ISO 13606</a>
<ul class="sectlevel2">
<li><a href="#_overview_7">11.1. Overview</a></li>
<li><a href="#_iso_13606_schema_for_awb">11.2. ISO 13606 schema for AWB</a></li>
<li><a href="#_comparison_of_13606_and_openehr_classes">11.3. Comparison of 13606 and openEHR Classes</a></li>
<li><a href="#_iso_13606_archetypes">11.4. ISO 13606 archetypes</a></li>
</ul>
</li>
<li><a href="#_fhir">12. FHIR</a></li>
<li><a href="#_support_and_contributing">13. Support and Contributing</a>
<ul class="sectlevel2">
<li><a href="#_i_have_a_problem">13.1. I have a problem&#8230;&#8203;</a>
<ul class="sectlevel3">
<li><a href="#_with_the_adl_workbench">13.1.1. with the ADL Workbench</a></li>
<li><a href="#_with_an_archetype">13.1.2. with an archetype</a></li>
<li><a href="#_with_this_online_documentation">13.1.3. with this online documentation</a></li>
<li><a href="#_with_the_openehr_specifications">13.1.4. with the openEHR specifications</a></li>
</ul>
</li>
<li><a href="#_how_can_i_contribute">13.2. How can I contribute?</a>
<ul class="sectlevel3">
<li><a href="#_i_can_help_with_clinical_demographic_archetypes">13.2.1. I can help with clinical / demographic archetypes</a></li>
<li><a href="#_i_want_to_help_improving_adl_aom_2">13.2.2. I want to help improving ADL / AOM 2</a></li>
<li><a href="#_i_can_help_improving_the_tool">13.2.3. I can help improving the tool</a></li>
<li><a href="#_i_would_like_to_port_the_tool_to_another_language">13.2.4. I would like to port the tool to another language</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_release_history">14. Release History</a>
<ul class="sectlevel2">
<li><a href="#_04_december_2014_adl_2_0_5_github_tag_adl_2_0_5_jira_new_features_issues_fixed">14.1. 04 December 2014 - ADL 2.0.5 (Github tag adl_2.0.5) (Jira - new features; issues fixed)</a></li>
<li><a href="#_05_march_2014_adl_1_5_beta_release_10_git_tag_1_5beta10_jira">14.2. 05 March 2014 ADL 1.5 beta Release 10 (Git tag 1.5beta10) (Jira)</a></li>
<li><a href="#_9_april_2013_adl_1_5_beta_release_9_git_tag_1_5beta9_jira">14.3. 9 April 2013 ADL 1.5 beta Release 9 (Git tag 1.5beta9) (Jira)</a></li>
<li><a href="#_2_aug_2012_adl_1_5_beta_release_8_git_commit_4e6b696d1ad31a8269aa71e85aca4fee38172eef_was_svn_rev_1826_jira">14.4. 2 Aug 2012 ADL 1.5 beta Release 8 (Git commit 4e6b696d1ad31a8269aa71e85aca4fee38172eef (was SVN rev 1826)) (Jira)</a></li>
<li><a href="#_29_jun_2012_adl_1_5_beta_release_7_git_commit_fc5e9b292bb83a5d725074c53f16ad4b3ccc25b6_was_svn_rev_1757_jira">14.5. 29 Jun 2012 ADL 1.5 beta Release 7 (Git commit fc5e9b292bb83a5d725074c53f16ad4b3ccc25b6 (was SVN rev 1757)) (Jira)</a></li>
<li><a href="#_29_mar_2012_adl_1_5_beta_release_6_git_commit_50c1ac7d62407ed79b12a932b6a5ce613219f599_was_svn_rev_1677_jira">14.6. 29 Mar 2012 ADL 1.5 beta Release 6 (Git commit 50c1ac7d62407ed79b12a932b6a5ce613219f599 (was SVN rev 1677)) (Jira)</a></li>
<li><a href="#_29_nov_2011_adl_1_5_beta_release_5_git_commit_740a0d96eee071077b3e5a250c9c0686184ab446_was_svn_rev_1656_jira">14.7. 29 Nov 2011 ADL 1.5 beta Release 5 (Git commit 740a0d96eee071077b3e5a250c9c0686184ab446 (was SVN rev 1656)) (Jira)</a></li>
<li><a href="#_8_sep_2011_adl_1_5_beta_release_4_git_commit_a835702bca29da3a7349cc3a09118913b2625cd9_was_svn_rev_1603_jira">14.8. 8 Sep 2011 ADL 1.5 beta Release 4 (Git commit a835702bca29da3a7349cc3a09118913b2625cd9 (was SVN rev 1603)) (Jira)</a></li>
<li><a href="#_14_jan_2011_adl_1_5_beta_release_3_git_commit_65afe78825f9e2dc2d5e7865d6c649debe205d07_was_svn_rev_1405_jira">14.9. 14 Jan 2011 ADL 1.5 beta Release 3 (Git commit 65afe78825f9e2dc2d5e7865d6c649debe205d07 (was SVN rev 1405)) (Jira)</a></li>
<li><a href="#_28_sep_2010_adl_1_5_beta_release_2_git_commit_b0b8381134fdcdd90cdc0a68e02ec2e688ed0f0d_was_svn_rev_1247">14.10. 28 Sep 2010 ADL 1.5 beta Release 2 (Git commit b0b8381134fdcdd90cdc0a68e02ec2e688ed0f0d (was SVN rev 1247)):</a></li>
<li><a href="#_11_aug_2010_adl_1_5_beta_release_1_git_commit_569646fc6480548311e33a9a16d2bc4e12c94597_was_svn_rev_1105">14.11. 11 Aug 2010 ADL 1.5 beta Release 1 (Git commit 569646fc6480548311e33a9a16d2bc4e12c94597 (was SVN rev 1105)):</a></li>
<li><a href="#_22_mar_2009_adl_1_5_preview_release_1_5_0_git_commit_f9aa528c92824cf363a358930c4740a5190f3b7b_was_svn_rev_851">14.12. 22 Mar 2009 ADL 1.5 Preview Release 1.5.0 (Git commit f9aa528c92824cf363a358930c4740a5190f3b7b (was SVN rev 851)):</a></li>
<li><a href="#_02_apr_2008_release_1_4_1_git_commit_5c0fdaf3f1f065028a93ba936ccb8f292aad31cf_was_svn_rev_599_tag_release_1_4_1">14.13. 02 Apr 2008 Release 1.4.1 (Git commit 5c0fdaf3f1f065028a93ba936ccb8f292aad31cf (was SVN rev 599 / TAG Release-1.4.1))</a></li>
<li><a href="#_09_apr_2007_release_1_4_0_git_commit_f96c0eae57e6bb075e29fcc73937e5edb1799bd4_was_svn_rev_203">14.14. 09 Apr 2007 Release 1.4.0 (Git commit f96c0eae57e6bb075e29fcc73937e5edb1799bd4 (was SVN rev 203)):</a></li>
<li><a href="#_05_mar_2007_bug_fix_release_git_commit_9b902757ecc66b4ecb1d1fe81f948e86130fb576_was_svn_rev_169">14.15. 05 Mar 2007 bug fix release (Git commit 9b902757ecc66b4ecb1d1fe81f948e86130fb576 (was SVN rev 169)):</a></li>
<li><a href="#_02_mar_2007_release_git_commit_1a997c27e546635dcd985ff8d64268cc1acf7809_was_svn_rev_166">14.16. 02 Mar 2007 Release (Git commit 1a997c27e546635dcd985ff8d64268cc1acf7809 (was SVN rev 166))</a></li>
<li><a href="#_10_jan_2007_release_git_commit_fbf7675841258413a3275e2ae738ccd65275c19b_was_svn_rev_152">14.17. 10 Jan 2007 Release (Git commit fbf7675841258413a3275e2ae738ccd65275c19b (was SVN rev 152)):</a></li>
<li><a href="#_interim_release_subversion_89_24aug2006_various_small_fixes">14.18. interim release subversion 89 - 24/aug/2006 - various small fixes</a></li>
<li><a href="#_interim_release_subversion_81_29jun2006_iso_8601_datetime_enhancements_fixes">14.19. interim release Subversion 81 - 29/Jun/2006 - ISO 8601 date/time enhancements &amp; fixes</a></li>
<li><a href="#_interim_release_subversion_63_14may2006_adl_1_4_compliance">14.20. interim release Subversion 63 - 14/May/2006 ADL - 1.4 compliance</a></li>
<li><a href="#_interim_release_subversion_47_02apr2006">14.21. interim release Subversion 47 - 02/Apr/2006</a></li>
<li><a href="#_interim_release_subversion_46_27mar2006">14.22. interim release Subversion 46 - 27/Mar/2006</a></li>
<li><a href="#_interim_subversion_release_4_12_oct_2005">14.23. interim subversion release 4 - 12 Oct 2005</a></li>
<li><a href="#_interim_release_subversion_revision_3_23_july_2005">14.24. interim release Subversion revision 3 - 23 July 2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_57_23june2005">14.25. interim release BitKeeper cset 1.57 23/June/2005</a></li>
<li><a href="#_release_arch_desc_bitkeeper_cset_1_56_19june2005">14.26. release 'arch_desc' BitKeeper cset 1.56 19/June/2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_50_01june2005">14.27. interim release BitKeeper cset 1.50 01/June/2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_49_30may2005">14.28. interim release BitKeeper cset 1.49 30/May/2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_48_06may2005">14.29. interim release BitKeeper cset 1.48 06/May/2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_46_05_may_2005">14.30. interim release BitKeeper cset 1.46 - 05 May 2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_39_25feb2005">14.31. interim release BitKeeper cset 1.39 25/Feb/2005</a></li>
<li><a href="#_interim_release_cset_1_38_19_jan_2005">14.32. interim release cset 1.38 - 19 Jan 2005</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_32_29_july_2004">14.33. interim release BitKeeper cset 1.32 - 29 July 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_27_19_september_2004">14.34. interim release BitKeeper cset 1.27 - 19 September 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_25_05_may_2004">14.35. interim release BitKeeper cset 1.25 - 05 May 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_27_19_september_2004_2">14.36. interim release BitKeeper cset 1.27 - 19 September 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_23_09_september_2004">14.37. interim release BitKeeper cset 1.23 - 09 September 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_3_1_30_29_july_2004">14.38. interim release BitKeeper cset 1.3.1.30 - 29 July 2004</a></li>
<li><a href="#_interim_release_bitkeeper_cset_1_3_1_22_05_may_2004">14.39. interim release BitKeeper cset 1.3.1.22 - 05 May 2004</a></li>
<li><a href="#_mar2004_release_31_mar_2004_bitkeeper_cset_1_3_1_13">14.40. "mar2004" Release - 31 Mar 2004 (BitKeeper cset 1.3.1.13)</a></li>
<li><a href="#_interim_release_06_feb_2004">14.41. interim Release - 06 Feb 2004</a></li>
<li><a href="#_interim_release_27_jan_2004">14.42. interim Release - 27 Jan 2004</a></li>
<li><a href="#_jan2004_release_15_jan_2004">14.43. "jan2004" Release - 15 Jan 2004</a></li>
<li><a href="#_initial_release_november_2003">14.44. Initial Release - November 2003</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="imageblock text-center">
<div class="content">
<img src="https://specifications.openehr.org/images/openEHR_logo_RGB.svg" alt="openEHR logo">
</div>
</div>
</div>
</div>
<h1 id="_adl_workbench_awb_user_guide" class="sect0"><a class="anchor" href="#_adl_workbench_awb_user_guide"></a>ADL Workbench (AWB) User Guide</h1>
<div class="openblock partintro">
<div class="content">
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-center valign-top" colspan="2">&#169; 2020 The openEHR Foundation</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-center valign-top" colspan="2"><p class="tableblock"><a href="https://www.openehr.org" target="_blank" rel="noopener">The openEHR Foundation</a> is an independent, non-profit foundation, facilitating the sharing of health records by consumers and clinicians via open specifications, clinical models and open platform implementations.</p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Issuer</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.openehr.org/programs/software" target="_blank" rel="noopener">openEHR Software Program</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Keywords</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ADL Workbench, archetype, template, clinical model, ADL</p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Licence</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="http://apache.org/img/ASF20thAnniversary.jpg" alt="ASF20thAnniversary" width="15%"></span> Apache 2.0 Licence. <a href="http://apache.org/licenses/LICENSE-2.0.html" class="bare">http://apache.org/licenses/LICENSE-2.0.html</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Support</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Issues: <a href="https://specifications.openehr.org/components/adl-tools/open_issues" target="_blank" rel="noopener">Problem Reports</a></p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="_amendment_record"><a class="anchor" href="#_amendment_record"></a>Amendment Record</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 9.0909%;">
<col style="width: 54.5454%;">
<col style="width: 18.1818%;">
<col style="width: 18.1819%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Issue</th>
<th class="tableblock halign-left valign-top">Details</th>
<th class="tableblock halign-left valign-top">Raiser</th>
<th class="tableblock halign-left valign-top">Completed</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="latest_issue"></a>1.1.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Convert to asciidoctor.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T Beale</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="latest_issue_date"></a>01 Apr 2019</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Initial Writing.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T Beale</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">01 Jun 2010</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="_acknowledgements"><a class="anchor" href="#_acknowledgements"></a>Acknowledgements</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_primary_author"><a class="anchor" href="#_primary_author"></a>Primary Author</h3>
<div class="ulist">
<ul>
<li>
<p>Thomas Beale, Ars Semantica (UK); openEHR Foundation Management Board.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_contributors"><a class="anchor" href="#_contributors"></a>Contributors</h3>
<div class="paragraph">
<p>This guide has benefited from formal and informal input from the openEHR and wider health informatics community.</p>
</div>
</div>
<div class="sect2">
<h3 id="_trademarks"><a class="anchor" href="#_trademarks"></a>Trademarks</h3>
<div class="ulist">
<ul>
<li>
<p>'openEHR' is a trademark of the openEHR Foundation</p>
</li>
<li>
<p>'Java' is a registered trademark of Oracle Corporation</p>
</li>
<li>
<p>'Microsoft' and '.Net' are trademarks of the Microsoft Corporation</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_overview"><a class="anchor" href="#_overview"></a>1. Overview</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_adl_workbench_release_2_0_6"><a class="anchor" href="#_adl_workbench_release_2_0_6"></a>1.1. ADL Workbench release 2.0.6</h3>
<div class="paragraph">
<p><a href="#_release_history">Release History</a> | <a href="https://specifications.openehr.org/jira/AWBPR" target="_blank" rel="noopener">Report an issue</a> | <a href="https://specifications.openehr.org/jira/AWB" target="_blank" rel="noopener">Development Project (Jira)</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_what_is_the_workbench"><a class="anchor" href="#_what_is_the_workbench"></a>1.2. What is the Workbench?</h3>
<div class="paragraph">
<p>The ADL Workbench (AWB) is a compiler and IDE for working with the archetypes and templates written in the Achetype Definition Language (ADL), and based on any reference model, including openEHR, ISO 13606 and CIMI. The latest version of the <a href="https://specifications.openehr.org/releases/AM/latest/index" target="_blank" rel="noopener">archetype formalism</a> makes it one of the most powerful domain modelling tools available. Create models of clinical content (archetypes), data set definitions (templates), add terminology bindings and translations and then visualise and generate fully compiled output form in ADL, JSON, XML, YAML or ODIN.</p>
</div>
<div class="paragraph">
<p><a href="#_browsing_and_compiling">Screenshots</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_news"><a class="anchor" href="#_news"></a>1.3. News</h3>
<div class="ulist">
<ul>
<li>
<p>Full BMM support for generic types including through inheritance</p>
</li>
<li>
<p>Enumerated type support</p>
</li>
<li>
<p>Support for regular <code>C_PRIMITIVE_OBJECT</code> structures</p>
</li>
<li>
<p>GitHub integration and new smart archetype repository management</p>
</li>
<li>
<p>CIMI archetypes and templates supported</p>
</li>
<li>
<p>Many new visualisation and usability features</p>
</li>
<li>
<p><a href="https://specifications.openehr.org/releases/BASE/latest/resource.html" target="_blank" rel="noopener">New governance meta-data</a> supported</p>
</li>
<li>
<p><a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_tuple_constraints" target="_blank" rel="noopener">Tuple syntax</a> replaces domain specific syntax for quantities, ordinals etc</p>
</li>
<li>
<p>ADL2 internal coding system uses id-codes, at-codes and ac-codes</p>
</li>
<li>
<p><a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_value_sets_sub_section" target="_blank" rel="noopener">Value sets</a> now defined in archetype terminology</p>
</li>
<li>
<p>All <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_term_bindings_sub_section" target="_blank" rel="noopener">code bindings</a> are URIs</p>
</li>
<li>
<p>Standard <a href="https://specifications.openehr.org/releases/BASE/latest/resource.html#_resource_description_class" target="_blank" rel="noopener">lifecycle states</a></p>
</li>
<li>
<p>Fully independent of specific reference models - can load any RM</p>
</li>
<li>
<p>ADL 1.4 archetypes fully converted to ADL 2, including with extraction and synthesis of value sets</p>
</li>
<li>
<p>Supports <a href="https://specifications.openehr.org/releases/AM/latest/Identification.html#_overview_2" target="_blank" rel="noopener">namespaced archetype identifiers</a></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_roadmap"><a class="anchor" href="#_roadmap"></a>1.4. Roadmap</h3>
<div class="ulist">
<ul>
<li>
<p>Support for ADL 1.4 OPT generation</p>
</li>
<li>
<p>Support for ADL 2 template form visualisation</p>
</li>
<li>
<p>Live terminology service integration</p>
</li>
<li>
<p>Full visual editing</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_download"><a class="anchor" href="#_download"></a>1.5. Download</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 22.2222%;">
<col style="width: 11.1111%;">
<col style="width: 11.1111%;">
<col style="width: 11.1111%;">
<col style="width: 44.4445%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Platform</th>
<th class="tableblock halign-left valign-top">Release</th>
<th class="tableblock halign-left valign-top">Date</th>
<th class="tableblock halign-left valign-top">Executable</th>
<th class="tableblock halign-left valign-top">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Windows (64-bit)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.6.3060</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">30-05-2020</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.openehr.org/download_files/adl_workbench/adl_workbench_2.0.6-windows_64bit.exe" target="_blank" rel="noopener">.exe installer</a></p></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_learn_how_the_workbench_works"><a class="anchor" href="#_learn_how_the_workbench_works"></a>1.6. Learn how the workbench works</h3>
<div class="videoblock">
<div class="content">
<iframe src="https://www.youtube.com/embed/Jhnbamg7bAA?rel=0" frameborder="0" allowfullscreen></iframe>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_source_code"><a class="anchor" href="#_source_code"></a>1.7. Source Code</h3>
<div class="paragraph">
<p>The source code can be accessed from the <a href="https://github.com/openEHR/adl-tools" target="_blank" rel="noopener">adl-tools GitHub repository</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_notes"><a class="anchor" href="#_installation_notes"></a>2. Installation Notes</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_mac_os_x"><a class="anchor" href="#_mac_os_x"></a>2.1. Mac OS X</h3>
<div class="paragraph">
<p>ADL Workbench will be installed in your Applications folder, under a folder called openEHR.</p>
</div>
<div class="paragraph">
<p>When you double-click the ADL Workbench icon, it will start up inside X11 or XQuartz.</p>
</div>
</div>
<div class="sect2">
<h3 id="_linux"><a class="anchor" href="#_linux"></a>2.2. Linux</h3>
<div class="paragraph">
<p>The Linux version of ADL Workbench requires GTK+ 2.4.0 or above. You can check by typing this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>pkg-config --modversion gtk+-2.0</pre>
</div>
</div>
<div class="paragraph">
<p>The command should succeed and the version number of GTK+ should appear. If it is not 2.4.0 or above then you need to install GTK+ 2.4.0.</p>
</div>
<div class="paragraph">
<p>After downloading, create a directory, extract the contents of the archive, and run adl_workbench. This is normally done as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>$ mkdir awb 						<span class="tok-c1"># create a directory if never done before</span>
$ <span class="tok-nb">cd</span> awb
$ tar xvjf ../archive_file_name		<span class="tok-c1"># extract the files</span></code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_getting_started"><a class="anchor" href="#_getting_started"></a>3. Getting Started</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_overview_2"><a class="anchor" href="#_overview_2"></a>3.1. Overview</h3>
<div class="paragraph">
<p>Two resources need to be configured at first time used of the ADL Workbench. The first is the 'reference models' (RMs) which are imported in the form of schema files expressed in the openEHR 'basic meta-model' (BMM) format. Multiple RMs can be imported, enabling comparison of models, classes as well as archetypes based on different models.</p>
</div>
<div class="paragraph">
<p>The second resource that must be configured is the 'profiles' that define where archetypes and templates are to be found.</p>
</div>
</div>
<div class="sect2">
<h3 id="_basic_configuration"><a class="anchor" href="#_basic_configuration"></a>3.2. Basic Configuration</h3>
<div class="sect3">
<h4 id="_setting_rm_schemas"><a class="anchor" href="#_setting_rm_schemas"></a>3.2.1. Setting RM Schemas</h4>
<div class="paragraph">
<p>At installation, the AWB is normally set up to point to a set of reference model schemas copied from the <a href="https://github.com/openEHR/reference-models" target="_blank" rel="noopener">openEHR reference models Git repository</a>. You may want to check which Reference Model schemas are enabled initially. Choose <code>RM Schemas &gt; Configure Schemas</code> to do this. The dialog looks as follows.</p>
</div>
<div id="options_rm_schema_config" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/options_rm_schema_config.png" alt="options rm schema config">
</div>
<div class="title">Figure 1. Options dialog</div>
</div>
<div class="paragraph">
<p>You can check all RM schemas that apply to archetypes in any repository you might define. The only time you would leave a schema unchecked is if you have more than one version of the same schema and you want to choose a specific one. If multiple versions of the same schema are loaded, the most recent one will be chosen for use with archetypes based on the corresponding reference model.</p>
</div>
<div class="paragraph">
<p>See the <a href="#_tool_configuration">Tool Configuration</a> section for details on configuring RM schemas.</p>
</div>
</div>
<div class="sect3">
<h4 id="_setting_up_archetype_repositories"><a class="anchor" href="#_setting_up_archetype_repositories"></a>3.2.2. Setting up archetype repositories</h4>
<div class="paragraph">
<p>The first time you start the tool if you are a new user, you will be asked for a repository. The following dialog will appear:</p>
</div>
<div class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_screen_1.png" alt="repositories screen 1">
</div>
<div class="title">Figure 2. Repositories dialog</div>
</div>
<div class="paragraph">
<p>The section on <a href="#_obtaining_archetypes">Obtaining Archetypes</a> describes how to proceed.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_using_the_tool"><a class="anchor" href="#_using_the_tool"></a>3.3. Using the Tool</h3>
<div class="sect3">
<h4 id="_docking"><a class="anchor" href="#_docking"></a>3.3.1. Docking</h4>
<div class="paragraph">
<p>The AWB layout is docking-based, which means that the key components are all dockable 'tools'. This <a href="adl_workbench_guide/images/docking_overview.png">screenshot</a> shows multiple editor tabs, the Library tool, and various minimised tools at the bottom and right hand side. Docking can be used to <a href="adl_workbench_guide/images/docking_side_by_side_definitions.png">arrange editor tools side by side</a>, and to <a href="adl_workbench_guide/images/template_compiled.png">'pop' a tool out into an independent window</a>.</p>
</div>
<div class="paragraph">
<p>In general, docking is controlled in the normal way for the platform you are working on, e.g Windows, or the various GUI toolkits used on Linux and MacOS.</p>
</div>
</div>
<div class="sect3">
<h4 id="_general_layout"><a class="anchor" href="#_general_layout"></a>3.3.2. General layout</h4>
<div class="paragraph">
<p>The AWB has two facilities, the archetype compiler/viewer and the 'tester'. The main form shows the compiler/viewer, while the tester is normally minimised to the right. The Viewer looks as follows.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/overview.png"><img src="adl_workbench_guide/images/overview.png" alt="overview" width="70%"></a>
</div>
<div class="title">Figure 3. Expanded view in explorer</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/RM_icons_overview.png"><img src="adl_workbench_guide/images/RM_icons_overview.png" alt="RM icons overview" width="70%"></a>
</div>
<div class="title">Figure 4. Overview with RM icons</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_archetype_and_template_library"><a class="anchor" href="#_archetype_and_template_library"></a>3.3.3. Archetype and Template Library</h4>
<div class="paragraph">
<p>On the left side of the tool are <a href="adl_workbench_guide/images/explorers.png">two explorers</a>, making up the <em>Library tool</em> in AWB. The upper one is used to navigate all archetypes and templates, within the class hierarchy of the reference model on which the archetypes are based. Reference and working repository artefacts are merged in this view, and colourised so that the origin remains visible. The 'show all classes' option on the options panel can be used to force all classes in the hierarchy to be shown rather than just those which have archetypes in the current repository. Archetypes that appear below other archetypes are either specialisations, templates or template components. (Remember that the latter artefact types are technically just specialised archetypes.)</p>
</div>
<div class="paragraph">
<p>The lower explorer is used exclusively for templates and template components, and shows compositional relationships due to slot-filling, rather than specialisation in its hierarchy. The two explorers are linked, so that choosing an artefact node in the lower one automatically chooses the same artefact in the upper one, allowing its lineage to be visible.</p>
</div>
</div>
<div class="sect3">
<h4 id="_reference_model_browser"><a class="anchor" href="#_reference_model_browser"></a>3.3.4. Reference Model Browser</h4>
<div class="paragraph">
<p>A second tool available on the left side of the main screen is the Reference Model (RM) browser. This enables multiple reference models to be visualised and explored in detail. Each reference model that is loaded has its package and class structure shown as a tree. Since RM schemas can be nested, classes may come from different schemas. Right-clicking on a class enables the original schema in which a class was defined to be edited.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/rm_schema_tool.png" alt="rm schema tool">
</div>
<div class="title">Figure 5. RM schema tool</div>
</div>
<div class="paragraph">
<p>Classes can be viewed from different reference models, in a side-by-side fashion by using the docking controls, as shown below.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/rm_schema_tool_duplex_classes.png" alt="rm schema tool duplex classes">
</div>
<div class="title">Figure 6. RM schema tool</div>
</div>
</div>
<div class="sect3">
<h4 id="_reference_model_tool"><a class="anchor" href="#_reference_model_tool"></a>3.3.5. Reference Model Tool</h4>
<div class="paragraph">
<p>In the Reference Model schema browser, the context menu of each schema includes an option for viewing the schema. When selected, this view shows the schema meta-data in a tool in the same area as the Archetype and Class Tools.</p>
</div>
</div>
<div class="sect3">
<h4 id="_the_address_bar"><a class="anchor" href="#_the_address_bar"></a>3.3.6. The Address Bar</h4>
<div class="paragraph">
<p>At the top of the tool is an address bar that can be used to search for either elements of reference models, e.g. classes, or archetypes, <strong>depending on which of the Archetype/template library or RM browser is in focus</strong>.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/address_bar.png" alt="address bar">
</div>
<div class="title">Figure 7. Address bar</div>
</div>
</div>
<div class="sect3">
<h4 id="_archetype_and_class_tool_area"><a class="anchor" href="#_archetype_and_class_tool_area"></a>3.3.7. Archetype and Class Tool area</h4>
<div class="paragraph">
<p>The middle area of the screen is dedicated to viewing archetypes, templates and browsing the reference model. Two types of tool are used for this - the Archetype Tool and the Class Tool. Any number of each tool can be launched. The first Archetype Tool starts just by left clicking on an archetype or template in the Library. New Archetype Tools are launched by right-clicking and selecting 'New Tool' from the context menu. The same applies to starting a Class Tool - left or right-click on a Class in the Library area.</p>
</div>
</div>
<div class="sect3">
<h4 id="_the_archetype_tool"><a class="anchor" href="#_the_archetype_tool"></a>3.3.8. The Archetype Tool</h4>
<div class="paragraph">
<p>The Archetype Tool enables a single archetype to be visualised in many ways. In the toolbar, the 'view' controls (to the right of the Archetype id text box) allow selection of differential and flat views. With one of these selected, the notebook tab controls allow viewing of the following aspects of an archetype:</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/archetype_view_controls.png" alt="archetype view controls">
</div>
<div class="title">Figure 8. Archetype view controls</div>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Description view</strong>: the Administrative and Descriptive meta-data of the archetype, as well as the terminology binding summary;</p>
</li>
<li>
<p><strong>Definition view</strong>: a 'node map' visualising the formal definition of the archetype, including various controls on the right side;</p>
</li>
<li>
<p><strong>Paths view</strong>: all paths extracted from the archetype, with various controls for fine-tuning the view;</p>
</li>
<li>
<p><strong>Slots view</strong>: a two-part view, consisting of:</p>
<div class="ulist">
<ul>
<li>
<p>the slots in the archetype, with the archetypes from the rest of the repository that match the slot constraints;</p>
</li>
<li>
<p>other archetypes whose slots the current archetype can fill;</p>
</li>
</ul>
</div>
</li>
<li>
<p><strong>Terminology view</strong>: a structured view of the ontology section of the archetype or template, including term bindings and ref set bindings;</p>
</li>
<li>
<p><strong>Annotations view</strong>: a structured view of archetype annotations, for those archetypes that include them;</p>
</li>
<li>
<p><strong>ADL view</strong>: a view showing the ADL text in either the source differential form or of the generated flat archetype.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_the_class_tool"><a class="anchor" href="#_the_class_tool"></a>3.3.9. The Class Tool</h4>
<div class="paragraph">
<p>The class tool is designed to allow the user to explore the reference model starting from a given class. It provides 4 views: properties, ancestors, descendants and closure. The <code>Properties</code> view shows all properties defined in the class and its ancestors, grouped on the basis of the class in which each property was declared in. This is known as the 'flat' view of the class.</p>
</div>
<div class="paragraph">
<p>The <code>Ancestors</code> and <code>Descendants</code> views show the inheritance tree above and below the focal class, including multiple inheritance.</p>
</div>
<div class="paragraph">
<p>The <code>Closure</code> view displays the properties and allowing the user to navigate through the entire property reachability closure by clicking open attributes at will. Because this computation is resource-intensive, the user can regulate the depth of the closure to explore. This means that the closure will in general only be partially computed, and it is up to the user to right click on terminal nodes they want to expand.</p>
</div>
<div class="paragraph">
<p>Since the reference model includes numerous attributes whose static type is either abstract or otherwise has descandants, the <code>Closure</code> view allows the user to choose to display these by right-clicking on a node.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/class_tool.png"><img src="adl_workbench_guide/images/class_tool.png" alt="class tool"></a>
</div>
<div class="title">Figure 9. Class properties view</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/class_tool_ancestors.png"><img src="adl_workbench_guide/images/class_tool_ancestors.png" alt="class tool ancestors"></a>
</div>
<div class="title">Figure 10. Ancestors view</div>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/class_tool_descendants.png"><img src="adl_workbench_guide/images/class_tool_descendants.png" alt="class tool descendants"></a>
</div>
<div class="title">Figure 11. Expanded view in explorer</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/class_tool_closure.png"><img src="adl_workbench_guide/images/class_tool_closure.png" alt="class tool closure"></a>
</div>
<div class="title">Figure 12. Overview with RM icons</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_artefact_overview"><a class="anchor" href="#_artefact_overview"></a>3.4. Artefact overview</h3>
<div class="paragraph">
<p>The ADL Workbench is designed to parse and validate archetypes. Technically speaking, 'archetypes' are any artefact conforming to the <a href="https://specifications.openehr.org/releases/AM/latest/index" target="_blank" rel="noopener">openEHR Archetype  specifications</a>, or the older ISO13606-2 specification, which is a snapshot of the <a href="https://specifications.openehr.org/releases/AM/latest/AOM1.4.html" target="_blank" rel="noopener">openEHR AOM 1.4 specification</a>. The <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html" target="_blank" rel="noopener">ADL2 specification</a> defines 4 logical kinds of artefact. These include three kinds of archetype, and the 'operational template'. The latter is generated from a template, and is used as the basis for all further downstream transformations. The various artefact types and their file formats are shown below.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 50%;">
<col style="width: 16.6666%;">
<col style="width: 16.6668%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Artefact type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Source file types</th>
<th class="tableblock halign-left valign-top">Flat file type</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>archetype</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a theme-based definition of multiple data points/groups, using the archetype constraint formalism</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.adls</code> (ADL 1.5)<br>
 <code>.adl</code> (ADL 1.4)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.adlf</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>template</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a use-case specific definition of content, consisting of data items from various archetypes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.adls</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>template_component</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a component of a template</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.adls</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>operational_template</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">the inheritance-flattened form of a template, used as the basis for all further transformations</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.opt</code></p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_obtaining_archetypes"><a class="anchor" href="#_obtaining_archetypes"></a>4. Obtaining Archetypes</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_repository_and_library_configuration"><a class="anchor" href="#_repository_and_library_configuration"></a>4.1. Repository and Library Configuration</h3>
<div class="paragraph">
<p>The ADL Workbench uses a system of <em>repositories</em> and <em>libraries</em> to locate archetypes. A repository is a physical file system location, e.g. a Git checkout area, and archetypes are found below this, in individual libraries. The root point is identified with a special <code>_repo.idx</code> file, and each library root point contains a <code>_repo_lib.idx</code> file. These files only have to be written once in the repository, and effectively make the repositories self-describing.</p>
</div>
<div class="paragraph">
<p>The user now only has to specify the repository root points, for existing repositories, and the libraries will be read by the tool. This is made easier by additions to the workbench which allow it to use DVCS tools like Git and Subversion to clone, update and read repositories on the user&#8217;s computer. Further, the URLs of 3 well-known Git repositories are known by the tool to enable easy initial installation.</p>
</div>
<div class="paragraph">
<p>When a user first installs this new version of the tool, the following screen is seen:</p>
</div>
<div id="repositories_screen_1" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_screen_1.png" alt="repositories screen 1">
</div>
<div class="title">Figure 13. Repositories dialog</div>
</div>
<div class="paragraph">
<p>The three rows correspond to 2 openEHR and one CIMI repositories. Any of these repositories can be 'installed' by hitting the install link, which will result in the following dialog:</p>
</div>
<div id="repositories_screen_install" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_screen_install.png" alt="repositories screen install">
</div>
<div class="title">Figure 14. Repositories install sub-dialog</div>
</div>
<div class="paragraph">
<p>There are two possibilities here:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>choose an existing checkout of the repository, which you may already have;</p>
</li>
<li>
<p>create a new clone of the repository, in which case choose a parent directory.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Doing either with the <a href="https://github.com/openEHR/adl-archetypes" target="_blank" rel="noopener"><code>adl-archetypes</code> reference repository</a> enables the archetype libraries to be read in and used. They are shown on the repository dialog as follows:</p>
</div>
<div id="repositories_screen_installed" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_screen_installed.png" alt="repositories screen installed">
</div>
<div class="title">Figure 15. Repositories installed view</div>
</div>
<div class="paragraph">
<p>You can add a completely new repository as well, by using the <code>Browse</code> button at the bottom of the dialog. If you choose a directory that is not already set up as an Archetype repository, the workbench will create the necessary control files for you, and save them. The result of doing this looks as follows:</p>
</div>
<div id="repositories_add_new" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_add_new.png" alt="repositories add new">
</div>
<div class="title">Figure 16. Repositories add new repository</div>
</div>
<div class="paragraph">
<p>Hitting the icon in the 'edit' column results in the text editor being launched, and you can edit the new repository meta-data, e.g.:</p>
</div>
<div id="repositories_add_new_edit" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_add_new_edit.png" alt="repositories add new edit">
</div>
<div class="title">Figure 17. Repositories add new manual edit</div>
</div>
<div class="paragraph">
<p>When you save and quit the editor, you will see the new repository details updated in the main dialog:</p>
</div>
<div id="repositories_add_new_edited" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_add_new_edited.png" alt="repositories add new edited">
</div>
<div class="title">Figure 18. Repositories add new repository (updated)</div>
</div>
<div class="paragraph">
<p>The next step in this add-new case is to define some libraries below the repository root point. All you are doing in fact is asking the tool to create <code>_repo_lib.idx</code> control files. You can do this in two ways:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>create one control file at the root - 'add new library here' option, OR</p>
</li>
<li>
<p>create one or more control files at various points below the root - 'add new library' option.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>These options are available on right click on the new repository node:</p>
</div>
<div id="repositories_add_new_lib" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_add_new_lib.png" alt="repositories add new lib">
</div>
<div class="title">Figure 19. Repositories add new library</div>
</div>
<div class="paragraph">
<p>Choosing either of these will result in a library row being added to the repository dialog view:</p>
</div>
<div id="repositories_new_lib_added" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/repositories_new_lib_added.png" alt="repositories new lib added">
</div>
<div class="title">Figure 20. Repositories add new library (updated)</div>
</div>
<div class="paragraph">
<p>The effect of the repository setup activities causes just the repository root directories to be recorded in the <code>.cfg</code> file (you can see this via the menu option <code>Tools &gt; Options &gt; Edit file</code>).</p>
</div>
<div class="paragraph">
<p>You can use the <a href="adl_workbench_guide/images/profile_combo.png">profile combo selector</a> above the archetype explorer to switch between the loaded libraries.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_browsing_and_compiling"><a class="anchor" href="#_browsing_and_compiling"></a>5. Browsing and Compiling</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_the_archetype_and_template_library"><a class="anchor" href="#_the_archetype_and_template_library"></a>5.1. The Archetype and Template Library</h3>
<div class="paragraph">
<p>As soon as you have specified a profile (Repository &gt; Set repository), the left-hand side explorer controls will populate and you will initially see the explorer with the reference model (RM) class hierarchy. If you have selected 'Show entire terminology in explorer?' in the Options dialog, you will see all classes from all loaded RM schemas. This can be useful for understanding the reference models. Normally you will probably not use this option. At any time, you can select a class node in the explorer, and its Reference Model definition will be displayed in flat form, i.e. compressed through inheritance.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/explorer_initial_view.png"><img src="adl_workbench_guide/images/explorer_initial_view.png" alt="explorer initial view" width="70%"></a>
</div>
<div class="title">Figure 21. Initial view in explorer</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/explorer_spec.png"><img src="adl_workbench_guide/images/explorer_spec.png" alt="explorer spec" width="70%"></a>
</div>
<div class="title">Figure 22. Explorer showing specialisation</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_compiling_archetypes"><a class="anchor" href="#_compiling_archetypes"></a>5.2. Compiling archetypes</h3>
<div class="paragraph">
<p>When you start the ADL Workbench, archetypes are not compiled. The easiest way to compile them is to hit F7, which will compile all of the archetypes in the currently selected repository in one go. This can be interrupted with Shift-ESC. 'Compiling' here means parsing, validating and flattening. Archetypes can also be compiled individually by selecting them in the explorer. Other options under the repository menu allow you to compile archetypes in selected subtrees. If you select a specialised archetype, its specialisation parents will automatically compile.</p>
</div>
<div class="paragraph">
<p>If your repository has templates in it, you can compile a template in the same way. If you select a template in the Template explorer tab, you will see that all its dependencies compile, i.e. all archetypes implicated in its slot-filling and specialisation statements.</p>
</div>
<div class="paragraph">
<p>The compilation process performs validation on every archetype and reports errors. Errors fall into two categories: syntactic, denoted with codes starting with 'S', and validity errors, denoted with 'V' codes. The errors are shown both in the status tab and the errors tab at the bottom. The status window is shown below.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/compile_1.png"><img src="adl_workbench_guide/images/compile_1.png" alt="compile 1"></a>
</div>
<div class="title">Figure 23. Compilation feedback</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/compile_2.png"><img src="adl_workbench_guide/images/compile_2.png" alt="compile 2"></a>
</div>
<div class="title">Figure 24. Compilation errors</div>
</div></div></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>The compilation errors can also be seen in the Errors tab at the bottom, classified according to type, as shown below.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/errors_2.png" alt="errors 2">
</div>
<div class="title">Figure 25. Errors view</div>
</div>
<div class="sect3">
<h4 id="_metrics_report"><a class="anchor" href="#_metrics_report"></a>5.2.1. Metrics Report</h4>
<div class="paragraph">
<p>The <code>Metrics</code> tab provides a report of counts of archetypes, compiled archetypes, specialised archetypes and so on, for the current repository.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/catalogue_metrics.png" alt="catalogue metrics">
</div>
<div class="title">Figure 26. Repository metrics</div>
</div>
<div class="paragraph">
<p>The <code>Statistics</code> tab provides a statistical report of the use of RM types and prperties in archetypes, as well as terminology definitions and bindings.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/catalogue_statistics.png" alt="catalogue statistics">
</div>
<div class="title">Figure 27. Repository statistics</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_viewing_an_archetype"><a class="anchor" href="#_viewing_an_archetype"></a>5.3. Viewing an archetype</h3>
<div class="paragraph">
<p>This section describes the various ways of viewing a successfully compiled archetype.</p>
</div>
<div class="sect3">
<h4 id="_descriptive_meta_data"><a class="anchor" href="#_descriptive_meta_data"></a>5.3.1. Descriptive meta-data</h4>
<div class="paragraph">
<p>All archetypes have a number of header sections containing descriptive meta-data about the archetype. The Description tab shows all of these sections, including author details, translation information, keywords, purpose, use, misuse and so on.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/description_1.png"><img src="adl_workbench_guide/images/description_1.png" alt="description 1"></a>
</div>
<div class="title">Figure 28. Description sections</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/description_unicode.png"><img src="adl_workbench_guide/images/description_unicode.png" alt="description unicode"></a>
</div>
<div class="title">Figure 29. Description (unicode example)</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_source_differential_and_flat_forms"><a class="anchor" href="#_source_differential_and_flat_forms"></a>5.3.2. Source (differential) and flat forms</h4>
<div class="paragraph">
<p>A key point to understand is that in most views, the archetype is visible in either source (differential) or flat form. For non-specialised archetypes, the two forms are structurally the same. For specialised archetypes and templates, the source form is the same idea as for object-oriented class files (e.g. in Java, .NET, etc), i.e. it contains only differences with respect to the immediate specialisation parent. For both, the source form is the 'authored' form. The flat form is the result of 'compressing' an archetype through its specialisation lineage, i.e. the 'operational' form of the archetype at runtime. This 'flattening' is the same thing that happens in all object-oriented programming technologies. Due to flattening, we often speak of the 'flat parent' with respect to a differential archetype, which denotes all constraints so far in the lineage.</p>
</div>
<div class="paragraph">
<p>From the point of view of the AWB, you can see both the differential and flat forms of an archetype visualised. Most of the views below can be seen in differential and flat form. Use the Differential and Flat View tabs at the top to switch.</p>
</div>
</div>
<div class="sect3">
<h4 id="_node_map"><a class="anchor" href="#_node_map"></a>5.3.3. Node map</h4>
<div class="paragraph">
<p>The node map is a way of viewing the definition part of the archetype structurally. The definition section contains the main definitional statements of the archetype, and can be thought of as a visualisation of an AOM structure, that is to say, each node corresponds to an AOM node type. In the differential form, the node map shows only those constraints introduced by the archetype on its own. If it is a non-specialised archetype, these constraints are in addition to constraints implied by the reference model (cardinality, types etc). For a specialised archetype, the constraints are in addition to the 'flat parent', i.e. the notional sum of constraints so far in the specialisation lineage. You will notice in particular that specialised archetypes have constraints whose parent attributes are not just a single attribute name like 'items', but are a path, like <code>/protocol</code>, <code>/data/events[id10]/items[id23]</code> and so on.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/node_map_diff_spec_no_RM.png"><img src="adl_workbench_guide/images/node_map_diff_spec_no_RM.png" alt="node map diff spec no RM"></a>
</div>
<div class="title">Figure 30. Differential, specialised, domain view</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/node_map_diff_spec_RM_classes.png"><img src="adl_workbench_guide/images/node_map_diff_spec_RM_classes.png" alt="node map diff spec RM classes"></a>
</div>
<div class="title">Figure 31. Node map, differential, specialised</div>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/node_map_flat_spec_no_RM.png"><img src="adl_workbench_guide/images/node_map_flat_spec_no_RM.png" alt="node map flat spec no RM"></a>
</div>
<div class="title">Figure 32. Flat, specialised, technical view</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/node_map_unicode.png"><img src="adl_workbench_guide/images/node_map_unicode.png" alt="node map unicode"></a>
</div>
<div class="title">Figure 33. Node map, unicode</div>
</div></div></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Each node map node is shown in three possible forms. If the node is coloured, it is defined new within the current archetype. If it is coloured, with a yellow border, it redefines an existing node from the flat parent. If it is solid yellow/grey, it is purely inherited.</p>
</div>
<div class="paragraph">
<p>You can use the radio button controls on the right to show each node in more or less detail. The 'RM visibility' radio button controls enable three categories of reference model attribute that have not been archetyped to be seen. These are as follows:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Data Properties</strong>: properties from the reference model that are part of the clinical data, and could be archetyped;</p>
</li>
<li>
<p><strong>Runtime Properties</strong>: properties from the reference model whose values are set at runtime, and for which no useful constraint could be set in an archetype (includes all dates and times);</p>
</li>
<li>
<p><strong>Infrastructure Properties</strong>: properties from the reference model that do not represent clinical data, but are used to manage data representation, identification, versioning etc.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The classifications of RM properties are defined in the reference model schemas and can be modified independently of the tool or any particular archetype.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/rm_differential.png"><img src="adl_workbench_guide/images/rm_differential.png" alt="rm differential"></a>
</div>
<div class="title">Figure 34. RM properties (differential form)</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/rm_flat.png"><img src="adl_workbench_guide/images/rm_flat.png" alt="rm flat"></a>
</div>
<div class="title">Figure 35. RM properties (flat form)</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_interface"><a class="anchor" href="#_interface"></a>5.3.4. Interface</h4>
<div class="paragraph">
<p>Archetype definitions are inherently hierarchical structures, and as a consequence various types of 'interface' can be extracted from any archetype. The most obvious is a 'path map', which is the basis for all queries written in AQL or a-path. Every node in an archetype is guaranteed to have a unique path. If you select the path map in the differential and flat forms, you will see the larger number of paths being extracted from the latter. There is also a tab for 'Interface tags', which shows a standard transform from paths to single string tags usable in XSDs and TDO APIs - in any language.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/paths_body_temp_diff_nat_lang.png"><img src="adl_workbench_guide/images/paths_body_temp_diff_nat_lang.png" alt="paths body temp diff nat lang"></a>
</div>
<div class="title">Figure 36. Path map, natural language paths</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/paths_body_temp_diff_machine.png"><img src="adl_workbench_guide/images/paths_body_temp_diff_machine.png" alt="paths body temp diff machine"></a>
</div>
<div class="title">Figure 37. Path map, machine paths</div>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/paths_diff_heart_rate_machine.png"><img src="adl_workbench_guide/images/paths_diff_heart_rate_machine.png" alt="paths diff heart rate machine"></a>
</div>
<div class="title">Figure 38. Path map, parent archetype</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/paths_heart_rate-pulse_flat_machine.png"><img src="adl_workbench_guide/images/paths_heart_rate-pulse_flat_machine.png" alt="paths heart rate pulse flat machine"></a>
</div>
<div class="title">Figure 39. Path map, flat child archetype</div>
</div></div></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Paths are crucial to manipulating archetypes at runtime, and also to building queries. The path syntax is a slightly reduced form of XPath syntax, and can be converted to standard XPath for XML-based processing.</p>
</div>
<div class="paragraph">
<p>For specialised archetypes, the Path Map under the differential view shows only paths in structures introduced in the specialised archetype, while the path map in the flat view shows paths due to all inherited nodes as well.</p>
</div>
<div class="paragraph">
<p>The columns of the display can be controlled using the check boxes on the right, and are as follows:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>physical paths</strong>: paths containing [atnnnn] codes, used by the software</p>
</li>
<li>
<p><strong>logical paths</strong>: paths with [atnnnn] codes replaced by the human-readable values from the terminology</p>
</li>
<li>
<p><strong>RM Type</strong>: the Reference Model type constrained by the node corresponding to the displayed path</p>
</li>
<li>
<p><strong>AOM Type</strong>: Archetype Object Model type - this is the type of the archetype node, usually only of interest to implementers</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Paths can be selected and saved to the clipboard for use in other tools, by selecting rows (including multiple rows, by using the Ctrl key) and then using Ctrl+C (copy) to copy to the clipboard. The clipboard contents can be viewed from the Edit menu.</p>
</div>
</div>
<div class="sect3">
<h4 id="_slot_map"><a class="anchor" href="#_slot_map"></a>5.3.5. Slot map</h4>
<div class="paragraph">
<p>Some archetypes contain slots, which are joining points to other archetypes. A slot is defined as a constraint that specifies the possible archetypes that may be used at this point. We can think of the archetypes that could fill the slot as 'suppliers', i.e. archetypes that this archetype uses, and archetypes having slots which the current archetype matches as 'clients'. The ADL Workbench evaluates the slots and displays both of these lists, as shown below.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/slots_1.png" alt="slots 1">
</div>
<div class="title">Figure 40. Slot map</div>
</div>
</div>
<div class="sect3">
<h4 id="_terminology"><a class="anchor" href="#_terminology"></a>5.3.6. Terminology</h4>
<div class="paragraph">
<p>All archetypes contain an internal terminology, consisting of 'id-codes' (node identifiers), 'at-codes' (identifying coded values) and 'ac-codes' (identifying value sets). They may also include bindings between any of these and external terminologies and other terminology resources. These elements are found in the 'terminology' section of the archetype, such as shown here.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/terminology.png"><img src="adl_workbench_guide/images/terminology.png" alt="terminology"></a>
</div>
<div class="title">Figure 41. Terminology - id codes</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<a class="image" href="adl_workbench_guide/images/terminology2.png"><img src="adl_workbench_guide/images/terminology2.png" alt="terminology2"></a>
</div>
<div class="title">Figure 42. Terminology - at/ac codes and value sets</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_adl_view"><a class="anchor" href="#_adl_view"></a>5.3.7. ADL view</h4>
<div class="paragraph">
<p>The ADL source of an archetype can be viewed in the 'ADL' tab, regardless of whether it has compiled successfully or not. The 'ADL 1.4' and 'ADL 2' source sub-tabs are editable, and changes made can be saved using ctrl-S or the 'Save' button, which will cause an immediate re-compile.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/archetype_source_view.png" alt="archetype source view">
</div>
<div class="title">Figure 43. ADL view</div>
</div>
</div>
<div class="sect3">
<h4 id="_serialised_views_adl_odin_xml_json"><a class="anchor" href="#_serialised_views_adl_odin_xml_json"></a>5.3.8. Serialised views: ADL, ODIN, XML, JSON</h4>
<div class="paragraph">
<p>Compiled archetypes can be viewed in various serialised formats, which can be used for testing ADL, XML, JSON and other software components. In both differential and flat forms, any compiled archetype can be viewed as ADL, ODIN, XML and JSON. The ODIN form is equivalent to a DOM tree in XML, but more regular.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/source_1.png" alt="source 1">
</div>
<div class="title">Figure 44. Source view</div>
</div>
<div class="paragraph">
<p>The output in the XML view can be controlled by a set of rules accessible from the XML menu.</p>
</div>
</div>
<div class="sect3">
<h4 id="_validity_report"><a class="anchor" href="#_validity_report"></a>5.3.9. Validity report</h4>
<div class="paragraph">
<p>The 'Validity' tab displays any compiler messages for the archetype.</p>
</div>
</div>
<div class="sect3">
<h4 id="_statistics_report"><a class="anchor" href="#_statistics_report"></a>5.3.10. Statistics report</h4>
<div class="paragraph">
<p>The 'Statistics' tab displays a statistics report for RM class and terminology usage in the archetype.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/archetype_statistics.png" alt="archetype statistics">
</div>
<div class="title">Figure 45. ADL view</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_tool_configuration"><a class="anchor" href="#_tool_configuration"></a>6. Tool Configuration</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_set_up"><a class="anchor" href="#_set_up"></a>6.1. Set-up</h3>
<div class="paragraph">
<p>In order to work with the examples described below, the following configuration is advised. Experienced users may skip this step.</p>
</div>
<div class="sect3">
<h4 id="_rm_schema_configuration"><a class="anchor" href="#_rm_schema_configuration"></a>6.1.1. RM Schema configuration</h4>
<div class="paragraph">
<p>Reference Model (RM) Schemas are used by the ADL Workbench to validate archetypes and templates. Schemas are expressed as <a href="https://specifications.openehr.org/releases/LANG/latest/odin.html" target="_blank" rel="noopener">ODIN files</a> and have a <code>.bmm</code> (<a href="https://specifications.openehr.org/releases/LANG/latest/bmm.html" target="_blank" rel="noopener">BMM, basic meta-model</a>) extension. These schemas are defined in a nested way, with most files visible here being used as component schemas for a small number of top-level schemas representing the openEHR Reference Model, EN13606 model and so on.</p>
</div>
<div class="paragraph">
<p>The primary location for openEHR schemas is the <a href="https://github.com/openEHR/specifications-ITS-BMM" target="_blank" rel="noopener">specifications-ITS-BMM Github repository</a>. This contains schemas for all openEHR models, in BMM form. To use the repository as a model source for the AWB, clone it into a convenient area. Then use the RM Schemas dialog to use them, as follows:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Select <code>RM Schemas menu &gt; Configure Schemas&#8230;&#8203;</code> in the menu;</p>
</li>
<li>
<p>Use the <code>RM schema directory</code> field at the bottom to browse for and add the cloned repository - specify the path <code>/components</code>;</p>
</li>
<li>
<p>Click <code>Reload</code>;</p>
</li>
<li>
<p>Ensure that the schemas you require are checked, as shown <a href="adl_workbench_guide/images/options_rm_schema_config.png">here</a>.</p>
</li>
<li>
<p>Save the configuration.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Several RM schemas are provided with the AWB, which are copies of the controlled versions found in the <a href="https://github.com/openEHR/adl-archetypes" target="_blank" rel="noopener">adl-archetypes GitHub repository</a>. Whether using the bundled or Github repository schemas, you will need to have all the relevant RM schemas selected within the workbench, for your archetypes to work.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_the_cfg_file"><a class="anchor" href="#_the_cfg_file"></a>6.2. The .cfg file</h3>
<div class="sect3">
<h4 id="_setting_options_in_the_workbench"><a class="anchor" href="#_setting_options_in_the_workbench"></a>6.2.1. Setting options in the workbench</h4>
<div class="paragraph">
<p>Normally, all tool options are set from within the workbench, from the Options Dialog, reached from the Tools menu. It looks like this.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/options_dialog.png" alt="options dialog">
</div>
<div class="title">Figure 46. Options dialog</div>
</div>
</div>
<div class="sect3">
<h4 id="_location_on_various_platforms"><a class="anchor" href="#_location_on_various_platforms"></a>6.2.2. Location on various Platforms</h4>
<div class="paragraph">
<p>Options for the ADL workbench, and also the command line tool adlc are located in a .cfg file named after the particular tool e.g. <code>adl_workbench.cfg</code>, <code>adlc.cfg</code>. This file will be in the standard application configuration area for your operating system. For <code>adl_workbench</code> for example, it will be in a location like the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Windows 7/10</strong>: <code>C:\Users\%username%\AppData\Local\openEHR\adl_workbench\adl_workbench.cfg</code></p>
</li>
<li>
<p><strong>Mac OSX</strong>: <code>$HOME/openEHR/adl_workbench/adl_workbench.cfg</code></p>
</li>
<li>
<p><strong>Linux</strong>: <code>$HOME/openEHR/adl_workbench/adl_workbench.cfg</code></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Although each tool normally has its own <code>.cfg</code> file, the file <code>adl_workbench.cfg</code> is assumed to be the default. This means for example that if there is no <code>adlc/adlc.cfg</code>, but an <code>adl_workbench.cfg</code> file is found, it will be used.</p>
</div>
</div>
<div class="sect3">
<h4 id="_contents"><a class="anchor" href="#_contents"></a>6.2.3. Contents</h4>
<div class="paragraph">
<p>The ADL .cfg file is in ODIN format, and will typically include lines such as the following example (Windows), corresponding to the above configuration.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="odin"><span></span>	<span class="tok-nc">file_system</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">terminology_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">terminology</span><span class="tok-se">\\</span><span class="tok-s">openEHR_RM</span><span class="tok-se">\\</span><span class="tok-s">RM</span><span class="tok-se">\\</span><span class="tok-s">Release-1.0.2&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">aom_profile_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl-tools</span><span class="tok-se">\\</span><span class="tok-s">apps</span><span class="tok-se">\\</span><span class="tok-s">resources</span><span class="tok-se">\\</span><span class="tok-s">aom_profiles&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">export_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">Users</span><span class="tok-se">\\</span><span class="tok-s">Thomas</span><span class="tok-se">\\</span><span class="tok-s">AppData</span><span class="tok-se">\\</span><span class="tok-s">Local</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl_workbench</span><span class="tok-se">\\</span><span class="tok-s">export&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">last_user_selected_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">Ocean</span><span class="tok-se">\\</span><span class="tok-s">demographic&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">compiler_gen_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">Users</span><span class="tok-se">\\</span><span class="tok-s">Thomas</span><span class="tok-se">\\</span><span class="tok-s">AppData</span><span class="tok-se">\\</span><span class="tok-s">Local</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl_workbench</span><span class="tok-se">\\</span><span class="tok-s">gen&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">test_diff_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">Users</span><span class="tok-se">\\</span><span class="tok-s">Thomas</span><span class="tok-se">\\</span><span class="tok-s">AppData</span><span class="tok-se">\\</span><span class="tok-s">Local</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl_workbench</span><span class="tok-se">\\</span><span class="tok-s">diff_test&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">current_work_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl-archetypes</span><span class="tok-se">\\</span><span class="tok-s">ADL15-reference</span><span class="tok-se">\\</span><span class="tok-s">features</span><span class="tok-se">\\</span><span class="tok-s">flattening&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">rm_schema_directory</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">reference-models</span><span class="tok-se">\\</span><span class="tok-s">models&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">rm_schemas</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">load_list</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;openehr_adltest_1.0.2&quot;</span><span class="tok-p">,</span> <span class="tok-s">&quot;openehr_ehr_extract_1.1.0&quot;</span><span class="tok-p">,</span> <span class="tok-s">&quot;cdisc_core_0.5.0&quot;</span><span class="tok-p">,</span> <span class="tok-s">&quot;cimi_rm_2.0.2&quot;</span><span class="tok-p">,</span> <span class="tok-s">&quot;hl7_fhir_dstu&quot;</span><span class="tok-p">,</span> <span class="tok-s">&quot;cen_en13606_0.95&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">gui</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">app_width</span> <span class="tok-o">=</span> <b class="conum">(1616)</b>
		<span class="tok-nc">app_height</span> <span class="tok-o">=</span> <b class="conum">(916)</b>
		<span class="tok-nc">app_x_position</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-mi">-8</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">app_y_position</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-mi">-8</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">app_maximised</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">test_split_position</span> <span class="tok-o">=</span> <b class="conum">(442)</b>
		<span class="tok-nc">default_tool_tab</span> <span class="tok-o">=</span> <b class="conum">(0)</b>
		<span class="tok-nc">show_flat_form</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_rm_multiplicities</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_rm_inheritance</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_codes</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_technical_view</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">expand_node_tree</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_line_numbers</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">display_archetype_source</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">use_rm_pixmaps</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">True</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">show_entire_ontology</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">exec</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">app_version</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;2.0.5.2594&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">repositories</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">locations</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;openEHR-reference repository&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">openEHR</span><span class="tok-se">\\</span><span class="tok-s">adl-archetypes&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;CIMI-CIMI archetypes&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">CIMI</span><span class="tok-se">\\</span><span class="tok-s">archetypes&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;xxxxx-xxxxx-4&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">dev</span><span class="tok-se">\\</span><span class="tok-s">Ocean</span><span class="tok-se">\\</span><span class="tok-s">demographic&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-p">&gt;</span>
		<span class="tok-nc">current_library_name</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;openEHR-ADLref&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">commands</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">text_editor_command</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">Program Files (x86)</span><span class="tok-se">\\</span><span class="tok-s">Vim</span><span class="tok-se">\\</span><span class="tok-s">vim74</span><span class="tok-se">\\</span><span class="tok-s">gvim.exe&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">editor_app_command</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;cmd /q /d /c start </span><span class="tok-se">\&quot;\&quot;</span><span class="tok-s"> /b&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">difftool_command</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;C:</span><span class="tok-se">\\</span><span class="tok-s">Program Files (x86)</span><span class="tok-se">\\</span><span class="tok-s">WinMerge</span><span class="tok-se">\\</span><span class="tok-s">WinMergeU.exe /e /u /f *.*&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">general</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">archetype_view_language</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;en&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">error_reporting_level</span> <span class="tok-o">=</span> <b class="conum">(9002)</b>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">compiler</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">adl_15_roundtripping</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">validation_strict</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">rm_flattening</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-l">False</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">namespace_table</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">namespaces</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;oe&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;org.openehr&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">terminology_settings</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">uri_templates</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;snomedct&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;http://snomed.info/id/$code_string&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;snomed-ct&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;http://snomed.info/id/$code_string&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;snomed&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;http://snomed.info/id/$code_string&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;openehr&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;http://openehr.org/id/$code_string&quot;</span><span class="tok-p">&gt;</span>
			<span class="tok-p">[</span><span class="tok-s">&quot;loinc&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;http://loinc.org/id/$code_string&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span>
	<span class="tok-nc">authoring</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
		<span class="tok-nc">author_name</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Thomas Beale &lt;thomas.beale@oceaninformatics.com&gt;&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">author_org</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Ocean Informatics &lt;http://www.oceaninformatics.com&gt;&quot;</span><span class="tok-p">&gt;</span>
		<span class="tok-nc">author_copyright</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Copyright (c) 2014 Thomas Beale&quot;</span><span class="tok-p">&gt;</span>
	<span class="tok-p">&gt;</span></code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_about_adl_2"><a class="anchor" href="#_about_adl_2"></a>7. About ADL 2</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_overview_3"><a class="anchor" href="#_overview_3"></a>7.1. Overview</h3>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
what has been known as the 'ADL 1.5' formalism has been renamed to 'ADL 2' at the Oslo working meeting September 2014, due to breaking changes with respect to ADL 1.4. Backwardly compatible versions such as 1.5, 1.6 may be introduced in the future, taking features from ADL 2, in order to provide an upgrade pathway for implementers.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The ADL (Archetype Definition Language) release 2 formalism, and its object model counterpart, the AOM (Archetype Object Model) is a major advance on the previous 1.4 release. It fixes a number of problems with ADL/AOM 1.4, provides a unified formalism for both archetypes and templates, and adds a number of useful new features. These help pages don&#8217;t attempt to provide the pedagogic basis of the formalism, which can be found in the <a href="https://specifications.openehr.org/releases/AM/latest/index" target="_blank" rel="noopener">specifications</a>, rather it illustrates each feature of the ADL/AOM 2 formalism with real examples you can see for yourself.</p>
</div>
<div class="paragraph">
<p>One question you may have is: what if I am not interested in the ADL syntax? You might be using XML archetypes for example. It is important to understand the various roles of ADL, XML and the AOM. These are explained in some detail in the <a href="https://specifications.openehr.org/releases/AM/latest/index" target="_blank" rel="noopener">archetype specifications</a>. Briefly, the ADL workbench performs most of its work using AOM structures. It also has an ADL parser and serialiser, and in the near future, will have a parser and serialiser for XML archetypes. Apart from some syntax basics, nearly all the validation carried out by the AWB is on AOM structures and has nothing to do with the ADL syntax. Additionally, ADL is a human readable syntax good for understanding the concepts and examples. However, it does not have to be used in archetype authoring or production systems - the XML form is completely equivalent.</p>
</div>
</div>
<div class="sect2">
<h3 id="_adlaom_2_new_features"><a class="anchor" href="#_adlaom_2_new_features"></a>7.2. ADL/AOM 2 - New features</h3>
<div class="sect3">
<h4 id="_meta_data_changes"><a class="anchor" href="#_meta_data_changes"></a>7.2.1. Meta-data changes</h4>
<div class="paragraph">
<p>ADL2 has more meta-data elements in the <code>description</code> section, including governance and IP-related. It also moves the <code>copyright</code> item from being a translatable string to a top-level (non-translated) string. The meta-data is provided by the <a href="https://specifications.openehr.org/releases/BASE/latest/resource.html" target="_blank" rel="noopener">Resource specification</a>.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/adl2_meta_data.png" alt="adl2 meta data">
</div>
<div class="title">Figure 47. ADL2 meta-data</div>
</div>
</div>
<div class="sect3">
<h4 id="_new_internal_coding_system"><a class="anchor" href="#_new_internal_coding_system"></a>7.2.2. New internal coding system</h4>
<div class="paragraph">
<p>The coding system used in ADL 1.4 archetypes used at-codes to identify everything, apart from occasional ac-codes to identify external value sets. This has been replaced by a new coding system in which id-codes identify all archetype nodes, at-codes identify terminology values and ac-codes identify terminology value sets, internal and external. The <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_node_identifiers" target="_blank" rel="noopener">ADL2 specification Node identifiers section</a> describes the details.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/adl2_id_codes.png" alt="adl2 id codes">
</div>
<div class="title">Figure 48. ADL2 id-codes</div>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/adl2_at_ac_codes.png" alt="adl2 at ac codes">
</div>
<div class="title">Figure 49. ADL2 at- and ac-codes</div>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_tuples_replace_domain_specific_syntax"><a class="anchor" href="#_tuples_replace_domain_specific_syntax"></a>7.2.3. Tuples replace domain-specific syntax</h4>
<div class="paragraph">
<p>The syntax used to represent <code>DV_QUANTITY</code>, <code>DV_ORDINAL</code> and <code>CODE_PHRASE</code> constraints for openEHR archetypes is now replaced by a standard 'tuple' syntax that enables any co-varying constraint to be expressed, including the afore-mentioned types. The <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_tuple_constraints" target="_blank" rel="noopener">ADL2 specification Tuples section</a> describes the details.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/adl2_tuples_quantity.png" alt="adl2 tuples quantity">
</div>
<div class="title">Figure 50. ADL2 tuple syntax</div>
</div>
</div>
<div class="sect3">
<h4 id="_terminology_value_set_constraints_moved_to_terminology_section"><a class="anchor" href="#_terminology_value_set_constraints_moved_to_terminology_section"></a>7.2.4. Terminology value-set constraints moved to terminology section</h4>
<div class="paragraph">
<p>Value sets used to be constrained inline. They are now moved to the terminology, in the form of a new 'value-set' construct, shown below, and described here in the <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html#_value_sets_sub_section" target="_blank" rel="noopener">ADL2 specification</a>.</p>
</div>
<div class="imageblock text-center">
<div class="content">
<img src="adl_workbench_guide/images/value_sets_adl2.png" alt="value sets adl2">
</div>
<div class="title">Figure 51. ADL2 value sets</div>
</div>
</div>
<div class="sect3">
<h4 id="_terminology_bindings_are_uris"><a class="anchor" href="#_terminology_bindings_are_uris"></a>7.2.5. Terminology bindings are URIs</h4>
<div class="paragraph">
<p>All bindings from internal codes to external entities are done using IHTSDO-style URIs. This enables the archetype terminology bindings structure to be simplified into one list.</p>
</div>
</div>
<div class="sect3">
<h4 id="_artefact_type_marker"><a class="anchor" href="#_artefact_type_marker"></a>7.2.6. artefact_type marker</h4>
<div class="paragraph">
<p>A new attribute has been added to the <code>ARCHETYPE</code> class to enable various instantiations of the AOM to be designated as having different design intention - <code>archetype</code>, <code>template</code>, <code>template_component</code>, <code>operational_template</code>. This allows ADL/AOM being used for archetypes, and various forms of templates.</p>
</div>
<div class="paragraph">
<p>You can see this feature as follows:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Choose the openEHR_Examples profile</p>
</li>
<li>
<p>In the archetype explorer, navigate to any archetype, e.g. <code>CLUSTER/person_additional_data_br</code></p>
</li>
<li>
<p>Choose the <code>differential</code> tab (top set of tabs)</p>
</li>
<li>
<p>Choose the <code>source</code> tab (second row of tabs); the keyword <code>archetype</code> appears at the start of the first line of the file.</p>
</li>
<li>
<p>Now navigate to the <code>PERSON.t_patient_simple</code> template in the template explorer</p>
</li>
<li>
<p>When it has compiled, you will see the <code>template</code> keyword in its source view</p>
</li>
<li>
<p>Navigate to one of its children. You will see the keyword <code>template_component</code> in its source view.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Via the above method, you have been viewing the archetype and template ADL source files. Of course normally you don&#8217;t need to do this to understand what kind of artefact you are looking at - the explorer icons are specific to each type.</p>
</div>
</div>
<div class="sect3">
<h4 id="_path_based_constraints_for_specialised_archetypes_and_templates"><a class="anchor" href="#_path_based_constraints_for_specialised_archetypes_and_templates"></a>7.2.7. Path-based constraints for specialised archetypes and templates</h4>
<div class="paragraph">
<p>All specialised archetypes and templates state their constraints in a 'differential form' whereby new or changed elements of an archetype are defined using blocks of ADL (or XML, in the XML format) under a path. The following example is typical:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="cadl"><span></span>    <span class="tok-nc">EVALUATION</span><span class="tok-p">[</span><span class="tok-nd">at0000.1</span><span class="tok-p">]</span> <span class="tok-o">matches </span><span class="tok-p">{</span> <span class="tok-c">-- Diagnosis</span>
        <span class="tok-p">/</span><span class="tok-nc">data</span><span class="tok-p">/</span><span class="tok-nc">items</span><span class="tok-p">[</span><span class="tok-nd">at0002.1</span><span class="tok-p">]/</span><span class="tok-nc">value</span><span class="tok-p"> </span><span class="tok-o">matches</span>
            <span class="tok-nc">DV_CODED_TEXT</span> <span class="tok-o">matches </span><span class="tok-p">{...}</span>
        <span class="tok-p">}</span>
     <span class="tok-p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>This deceptively simple enhancement to ADL/AOM ensures that specialised archetypes and templates can now be properly represented and maintained by tools, compared to the previous situation where specialised archetypes contain copies of elements from the parent artefact. You can see some examples of this, as follows.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Select the CKM profile</p>
</li>
<li>
<p>Navigate in the archetype explorer to <code>CONTENT_ITEM/CARE_ENTRY/EVALUATION/problem/diagnosis</code>, and select the diagnosis node, which corresponds to the archetype <code>openEHR-EHR-EVALUATION.problem-diagnosis.v1</code></p>
</li>
<li>
<p>Select the <code>differential</code> tab, and below it, in the 'Definition' tab, you should see this</p>
</li>
<li>
<p>You will see that below the top 'Diagnosis' node, the path <code>/data[at0001]/items</code> appears, and below that, one redefined object node and two new object node constraints.</p>
</li>
<li>
<p>Now select the <code>flat</code> tab, to see how these constraints have been correctly integrated into the structure defined by the parent archetype <code>openEHR-EHR-EVALUATION.problem.v1</code>, as shown here.
You can also use the 'Source' tab to see the path-based constraints in their source form. You can now navigate through the hierarchies in the archetype explorer, looking for specialised archetypes (any archetype whose parent is another archetype rather than a class), whose constraints all use the path-based definition method illustrated above. The <code>CONTENT_ITEM/CARE_ENTRY/OBSERVATION/lab-test</code> hierarchy for example contains numerous specialised archetypes.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_before_and_after_keywords_for_item_ordering_in_containers"><a class="anchor" href="#_before_and_after_keywords_for_item_ordering_in_containers"></a>7.2.8. before and after keywords for item ordering in containers</h4>
<div class="paragraph">
<p>The <code>before</code> and <code>after</code> keywords can be used to specify the ordering of elements added to a container in a specialised archetype or template. This ensures authors can maintain ordering of all items within container attributes, including over specialisation.</p>
</div>
<div class="paragraph">
<p>If you refer back to the problem-diagnosis example above in the <a href="adl_workbench_guide/images/problem-diagnosis_diff_view.png">differential form</a>, you will see that the second two nodes include 'before' and 'after' markers respectively. The former is <code>before [at0003]</code> and the latter <code>after [at0031]</code>, indicating the nodes from the parent archetype with respect to which the new nodes should be situated. If you now choose the Flat view, with RM visibility (radio buttons on the right) set to '+ class names', you will see that these two nodes are indeed situation in the correct positions with respect to the referenced nodes, as seen <a href="adl_workbench_guide/images/problem-diagnosis_flat+RM_view.png">here</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_generated_marker"><a class="anchor" href="#_generated_marker"></a>7.2.9. generated marker</h4>
<div class="paragraph">
<p>Used to indicate that the artefact was generated by software, rather than authored by hand. This flag will appear on any differential (.adls file extension) archetype converted from a legacy (pre-ADL 2) archetype (.adl extension). In addition, any generated flat form archetype (<code>.adlf</code> file) carries this marker. The flag primarily allows tools to detect that a source form archetype (i.e. any <code>.adls</code> file or its XML equivalent) was generated from a legacy file rather than an authored artefact.</p>
</div>
<div class="paragraph">
<p>Most archetypes in the CKM repository when viewed in their Differential Source form (Differential and Source tabs) include the <code>generated</code> marked in the top line. By contrast, none of the archetypes in the <a href="https://github.com/openEHR/adl-archetypes" target="_blank" rel="noopener">ADL test repository</a> contain differential archetypes with the <code>generated</code> marker.</p>
</div>
</div>
<div class="sect3">
<h4 id="_exclusion_of_object_constraints"><a class="anchor" href="#_exclusion_of_object_constraints"></a>7.2.10. Exclusion of object constraints</h4>
<div class="paragraph">
<p>Object constraints can be excluded, enabling templates to choose which constraints to retain for the use case of the template. Exclusion is also legal for archetypes, but is likely to be unexpected, and it is recommended that tools either prevent it or include a very clear confirmation dialog for the author. There are three ways to effect exclusion. For the examples in the following, select the openEHR_examples profile in the usual manner.</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Any attribute - complete removal</strong>: if the attribute in the flat parent has existence matches <code>{0..1}</code>, then it is optional and can be completely removed in a specialised child. To see an example of this, follow these steps:</p>
<div class="ulist">
<ul>
<li>
<p>Navigate to the <code>PERSON.t_patient_simple</code> template in the template explorer and select it (click once).</p>
</li>
<li>
<p>Select Differential View, Definition tab. You should see this. You will see that the final 'relationships' attribute has been removed by setting its existence to {0}.</p>
</li>
<li>
<p>Now select the Source view (second row of tabs), and you will see this, the ADL source form of the existence exclusion constraint.</p>
</li>
</ul>
</div>
</li>
<li>
<p><strong>Single-valued attribute - remove alternative(s)</strong>: if a single-valued attribute has multiple alternative optional constraints defined in the flat parent archetype (occurrences matches <code>{0..1}</code>, <code>{0..*}</code> etc), any of these may be redefined to <code>{0}</code>, i.e. occurrences of zero. To see an example of this, follow these steps:</p>
<div class="ulist">
<ul>
<li>
<p>TBD</p>
</li>
</ul>
</div>
</li>
<li>
<p><strong>Multiply-valued attribute - remove child</strong>: in exactly the same way as for single-valued attributes, any optional child of a multiply-valued (container) attribute may be removed by redefining its occurrences to <code>{0}</code>. To see an example of this, follow these steps:</p>
<div class="ulist">
<ul>
<li>
<p>Navigate to the <code>PERSON.t_patient_simple</code> template in the template explorer and select it (click once).</p>
</li>
<li>
<p>Still in the template explorer, open out the first sub-part of the template (the one marked <code>/details[at0001]/items</code>) and select the child <code>CLUSTER.t_birth_data</code>. You can now view the exclusions in various ways:</p>
<div class="ulist">
<ul>
<li>
<p>In the central archetype view area, select the 'Differential' select Definition tab with RM visibility = 'Hide', you should see this</p>
</li>
<li>
<p>Now change the RM visibility to '+ classes', you should see this</p>
</li>
<li>
<p>Now select the 'Source' view you should see this</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_negation_operator_for_primitive_type_exclusions_not_yet_implemented"><a class="anchor" href="#_negation_operator_for_primitive_type_exclusions_not_yet_implemented"></a>7.2.11. Negation operator for primitive type exclusions (Not yet implemented)</h4>
<div class="paragraph">
<p>In specialised archetypes and templates, unneeded elements from primitive type ranges / value sets in the parent artefact can be logically removed using the <code>!matches (∉)</code> operator. This provides a convenient way to remove a small number of items from a large list.</p>
</div>
</div>
<div class="sect3">
<h4 id="_archetype_archetype_external_reference"><a class="anchor" href="#_archetype_archetype_external_reference"></a>7.2.12. Archetype - archetype external reference</h4>
<div class="paragraph">
<p>The new <code>C_ARCHETYPE_ROOT</code> class in the AOM allows an archetype to refer to another archetype, without having to use a slot. To see an example, follow these steps:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Select the <code>openEHR-ADLref</code> archetype library</p>
</li>
<li>
<p>Navigate to and select the <code>COMPOSITION.t_ext_ref</code> template</p>
</li>
<li>
<p>Select Differential View, Definition tab, and you will see <a href="adl_workbench_guide/images/ext_ref_diff.png">this</a>, which shows the use of the <code>use_archetype</code> statement to select two archetypes to be used under the attribute <code>/content</code></p>
</li>
<li>
<p>Now choose the Source view, and you will see <a href="adl_workbench_guide/images/ext_ref_source.png">the ADL source expression</a>. Note that the use_archetype statements mention archetype ids, but no slot identifiers (at-codes) because there was no slot defined at this point.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_slot_redefinition_semantics_including_slot_filling"><a class="anchor" href="#_slot_redefinition_semantics_including_slot_filling"></a>7.2.13. Slot redefinition semantics, including slot-filling</h4>
<div class="paragraph">
<p>The semantics of redefining archetype slots in specialised archetypes and templates is defined in ADL/AOM 2. Slot-filling is regarded as a part of redefinition within a specialised archetype or template. A slot can be redefined by any of the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>specify slot-fillers;</p>
</li>
<li>
<p>specialise the slot definition itself, for example, to reduce the set of allowable archetypes;</p>
</li>
<li>
<p>close the slot, i.e. prevent any further slot-filling.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Slot-filling and slot closing can be seen as follows.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Select the openEHR_examples profile in the usual manner.</p>
</li>
<li>
<p>Navigate to and select the <code>PERSON.t_patient_simple</code> template in the template explorer.</p>
</li>
<li>
<p>Select Differential View, Source tabs to see <a href="adl_workbench_guide/images/slot_filling.png">this</a>.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_annotations_section"><a class="anchor" href="#_annotations_section"></a>7.2.14. Annotations section</h4>
<div class="paragraph">
<p>Annotations can now be added on a per-node basis, with each annotation having one or more facets (representation = <code>Hash&lt;T&gt;</code>). This supports fine-grained documentation of elements of archetypes and templates. A typical annotations section looks as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="odin"><span></span><span class="tok-nc">annotations</span>
  <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
    <span class="tok-p">[</span><span class="tok-s">&quot;en&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
      <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
        <span class="tok-p">[</span><span class="tok-s">&quot;/data[at0001]/items[at0.8]&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
          <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;design note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;this is a design note on allergic reaction&quot;</span><span class="tok-p">&gt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;requirements note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;this is a requirements note on allergic reaction&quot;</span><span class="tok-p">&gt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;medline ref&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;this is a medline ref on allergic reaction&quot;</span><span class="tok-p">&gt;</span>
          <span class="tok-p">&gt;</span>
        <span class="tok-p">&gt;</span>
        <span class="tok-p">[</span><span class="tok-s">&quot;/data[at0001]/items[at0.10]&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
          <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;design note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;this is a design note on intelerance&quot;</span><span class="tok-p">&gt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;requirements note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;this is a requirements note on intolerance&quot;</span><span class="tok-p">&gt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;national data dictionary&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;NDD ref for intoleranance&quot;</span><span class="tok-p">&gt;</span>
          <span class="tok-p">&gt;</span>
        <span class="tok-p">&gt;</span>
      <span class="tok-p">&gt;</span>
    <span class="tok-p">&gt;</span>
  <span class="tok-p">&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Annotations can also be added to an archetype for non-archetyped RM paths, e.g. to indicate the use or meaning of the corresponding data items within the context of that archetype.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="odin"><span></span><span class="tok-nc">annotations</span>
  <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
    <span class="tok-p">[</span><span class="tok-s">&quot;en&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
      <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
        <span class="tok-p">[</span><span class="tok-s">&quot;/context/location&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
          <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;design note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Note on use of the non-archteyped context/location RM element in this data&quot;</span><span class="tok-p">&gt;</span>
          <span class="tok-p">&gt;</span>
        <span class="tok-p">&gt;</span>
        <span class="tok-p">[</span><span class="tok-s">&quot;/context/health_care_facility/name&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
          <span class="tok-nc">items</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
            <span class="tok-p">[</span><span class="tok-s">&quot;design note&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Note on use of non-archteyped context/health_care_facility/name RM element in this data&quot;</span><span class="tok-p">&gt;</span>
          <span class="tok-p">&gt;</span>
        <span class="tok-p">&gt;</span>
      <span class="tok-p">&gt;</span>
    <span class="tok-p">&gt;</span>
  <span class="tok-p">&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Currently, the annotations feature implements a simple Hash of Strings, with plain String keys. Other more complex alternatives are available, e.g. where the keys are coded using at-codes, and then bound to globally standard codes within SNOMED CT or some other terminology. A discussion of these possibilities can be found <a href="https://www.openehr.org/digital_media/mailinglists//openehr-technical/msg05523.html" target="_blank" rel="noopener">here</a>.</p>
</div>
<div class="paragraph">
<p>Annotations can be viewed in the Annotations tab in either differential or flat form. The example archetypes <a href="https://github.com/openEHR/adl-archetypes/tree/master/ADL2-reference/validity/annotations" target="_blank" rel="noopener">here</a>, are displayed in a grid, as in <a href="adl_workbench_guide/images/annotations_tab.png">this screenshot</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_default_values_not_yet_implemented"><a class="anchor" href="#_default_values_not_yet_implemented"></a>7.2.15. Default values (Not yet implemented)</h4>
<div class="paragraph">
<p>The AOM now allows default values to be included on any node. This feature supports default value setting in templates.</p>
</div>
</div>
<div class="sect3">
<h4 id="_passthrough_node_flag_not_yet_implemented"><a class="anchor" href="#_passthrough_node_flag_not_yet_implemented"></a>7.2.16. Passthrough node flag (Not yet implemented)</h4>
<div class="paragraph">
<p>The AOM now includes a 'passthrough' flag on <code>C_COMPLEX_OBJECT</code> indicating that this node is not significant in terms of display. This allows nodes required for structuring data but otherwise redundant for screen display and reporting to be detected by rendering software.</p>
</div>
</div>
<div class="sect3">
<h4 id="_reference_model_subtype_matching_semantics"><a class="anchor" href="#_reference_model_subtype_matching_semantics"></a>7.2.17. Reference model subtype matching semantics</h4>
<div class="paragraph">
<p>Specialised archetypes and templates can now redefine the reference model type of a node, e.g. <code>DV_TEXT</code> into <code>DV_CODED_TEXT</code>. This allows free text constraints to be changed to coded-only constraints.</p>
</div>
</div>
<div class="sect3">
<h4 id="_node_congruence_conformance_semantics"><a class="anchor" href="#_node_congruence_conformance_semantics"></a>7.2.18. Node congruence &amp; conformance semantics</h4>
<div class="paragraph">
<p>Rules have now been defined for determining if a node in a specialised artefact is conformant (consistent) or congruent (the same as) a corresponding node in the parent. This allows proper validation of specialised archetypes and templates to be implemented.</p>
</div>
</div>
<div class="sect3">
<h4 id="_operational_template_object_model"><a class="anchor" href="#_operational_template_object_model"></a>7.2.19. Operational template object model</h4>
<div class="paragraph">
<p>The object model of an operational template is now defined. A formal specification is now available for tooling to use, and for use in software environments.</p>
</div>
</div>
<div class="sect3">
<h4 id="_flattening_semantics_for_operational_templates"><a class="anchor" href="#_flattening_semantics_for_operational_templates"></a>7.2.20. Flattening semantics for operational templates</h4>
<div class="paragraph">
<p>The rules for generating an operational template from source template &amp; archetypes are now defined. This means that tools can implement a reliable transform from source artefacts to the operational artefact.</p>
</div>
</div>
<div class="sect3">
<h4 id="_group_construct_not_yet_implemented"><a class="anchor" href="#_group_construct_not_yet_implemented"></a>7.2.21. Group construct (Not yet implemented)</h4>
<div class="paragraph">
<p>This feature supports groups within container attributes. Original proposal on <a href="https://specifications.openehr.org/wiki/spaces/ADL/pages/1278446/Archetype+Group+Construct" target="_blank" rel="noopener">this page</a>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_changes"><a class="anchor" href="#_changes"></a>7.3. Changes</h3>
<div class="sect3">
<h4 id="_existence_and_cardinality_are_now_optional"><a class="anchor" href="#_existence_and_cardinality_are_now_optional"></a>7.3.1. Existence and cardinality are now optional</h4>
<div class="paragraph">
<p>Due to reference model checking, the ADL 1.4 semantics of mandatory defaults for existence and cardinality have been removed; now the reference model is always used to determine the underlying existence and cardinality of an attribute. Archetypes and templates now only carry existence and cardinality if it is different from the reference model.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rules_for_at_codes"><a class="anchor" href="#_rules_for_at_codes"></a>7.3.2. Rules for at-codes</h4>
<div class="paragraph">
<p>Rules have been stated for when at-codes need to be specialised, according to the changes stated in the specialised artefact. Editing tools can determine correct node ids in specialised artefacts.</p>
</div>
</div>
<div class="sect3">
<h4 id="_invariants_and_declarations_merged_into_rules"><a class="anchor" href="#_invariants_and_declarations_merged_into_rules"></a>7.3.3. Invariants and declarations merged into rules</h4>
<div class="paragraph">
<p>A single <code>rules</code> section is now used to contain invariant and declaration statements, which define constraints over multiple nodes in the artefact. The formalism and model of rules has been substantially improved. Simplifies overall artefact structure; allows constraints to refer to external entities, such as patient data, time etc.</p>
</div>
</div>
<div class="sect3">
<h4 id="_terminology_extract_section_added_to_ontology_not_yet_implemented"><a class="anchor" href="#_terminology_extract_section_added_to_ontology_not_yet_implemented"></a>7.3.4. Terminology_extract section added to Ontology (Not yet implemented)</h4>
<div class="paragraph">
<p>A <code>terminology_extract</code> sub-section is now included in the terminology section of an archetype, enabling codes &amp; rubrics from terminology to be included. Mostly used for templates. Templates can directly include small extracts of external terminologies, making them standalone for such value-sets.</p>
</div>
</div>
<div class="sect3">
<h4 id="_representation_for_ref_set_reference_not_yet_implemented"><a class="anchor" href="#_representation_for_ref_set_reference_not_yet_implemented"></a>7.3.5. Representation for ref set reference (Not yet implemented)</h4>
<div class="paragraph">
<p>A final addition is needed to either the AOM or the openEHR Profile model, of a class that defines how to represent a resolved reference to an external terminology; this class would replace a <code>CONSTRAINT_REF</code> node from a source template in an operational template. The benefit is that external ref-set references will be resolved in an operational template.</p>
</div>
</div>
<div class="sect3">
<h4 id="_semantic_slot_type_not_yet_implemented"><a class="anchor" href="#_semantic_slot_type_not_yet_implemented"></a>7.3.6. Semantic slot type (Not yet implemented)</h4>
<div class="paragraph">
<p>See this sub-page for a discussion on the advanced semantics of slots, and how it simplifies templates.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rules_syntax_xpath_based_todo"><a class="anchor" href="#_rules_syntax_xpath_based_todo"></a>7.3.7. Rules syntax (Xpath-based) (TODO)</h4>
<div class="paragraph">
<p>TBD</p>
</div>
</div>
<div class="sect3">
<h4 id="_node_id_optionality"><a class="anchor" href="#_node_id_optionality"></a>7.3.8. Node_id optionality</h4>
<div class="paragraph">
<p>Currently node_id is specified as mandatory on all nodes. However, this is not semantically needed, andcreates unnecessarily long paths which don&#8217;t map cleanly to the equivalent XML Xpaths. ADL 2 defines precise rules for when node_ids are mandatory.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_working_with_templates"><a class="anchor" href="#_working_with_templates"></a>8. Working with Templates</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_overview_4"><a class="anchor" href="#_overview_4"></a>8.1. Overview</h3>
<div class="paragraph">
<p>Templates are a key new feature in ADL/AOM 2. Contrary to what one might expect, they are technically achieved by small extensions to the 1.4 vintage of ADL and the AOM - in other words, they are implemented as a kind of archetype.</p>
</div>
<div class="paragraph">
<p>Here is a short primer on archetypes and templates&#8230;&#8203;</p>
</div>
<div class="sect3">
<h4 id="_archetypes"><a class="anchor" href="#_archetypes"></a>8.1.1. Archetypes</h4>
<div class="paragraph">
<p>Archetypes are used to express re-usable structured data-item definitions in the form of constraints on a reference model. Archetypes are defined based on topic, independent of use context. The 'blood gases measurement' archetype for example includes all the data points that might be used in any form of blood gas observation. There are many archetypes that contain data points that relate to the same topic, but would never be used in the same situation together, e.g. in the BP measurement archetype, the systolic, diastolic and pulse pressure values are defined, but the latter is always used on its own, never with the former two. Composition of archetypes is supported via 'slots' where other archetypes can be attached. This allows decomposition and reuse. This enables the creation of larger structures consisting of a composition of smaller archetypes. Archetypes can also be specialised i.e. in the object-oriented inheritance sense, for example the heart-rate archetype can be specialised to include extra elements for fetal heart rate.</p>
</div>
<div class="paragraph">
<p>Archetypes support the binding of data nodes, names and values to concepts from external terminologies. They are also multi-lingual, and support all languages that can be expressed in Unicode.</p>
</div>
<div class="paragraph">
<p>Most of the examples you have seen on other pages of this help are archetypes.</p>
</div>
</div>
<div class="sect3">
<h4 id="_templates"><a class="anchor" href="#_templates"></a>8.1.2. Templates</h4>
<div class="paragraph">
<p>Templates are used to create definitions of content such as a particular document or message, required for specific use cases, such as specific screen forms, message types or reports. Typical examples include 'acute care discharge summary', 'GP referral' and radiology report'. They use archetypes by:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Choosing a root archetype;</p>
</li>
<li>
<p>specifying 'slot-fillers', that reference an archetype, to create the overall structure;</p>
</li>
<li>
<p>removing unneeded archetype data items by further constraining various existence and occurrences constraints to 0..0;</p>
</li>
<li>
<p>further constraining remaining data items in various ways, e.g. making optional data items mandatory, adjusting cardinality, refining terminology value sets;</p>
</li>
<li>
<p>defining terminology bindings.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Once a template is defined, it is then compiled, to produce a flattened form, i.e. the result of all the reference archetypes and templates compressed through the specialisation relationship. This is known as an operational template ('OPT'), is usually expressed in XML, and is the definitive machine-usable form of a template.</p>
</div>
<div class="paragraph">
<p>Below, you will find information about example templates.</p>
</div>
</div>
<div class="sect3">
<h4 id="_operational_templates"><a class="anchor" href="#_operational_templates"></a>8.1.3. Operational Templates</h4>
<div class="paragraph">
<p>The OPT is further processed into concretely usable artefacts such as:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>XSDs for message definitions; this approach completely replaces hand-built XML message and document definitions;</p>
</li>
<li>
<p>Code skeletons / APIs, e.g. for Java, C#, any other language ; these code skeletons provide an easy way for programmers to 'set' and 'get' the data of the specific message or document;</p>
</li>
<li>
<p>GUI screen forms for data capture, data display;</p>
</li>
<li>
<p>Other kinds of visualisation;</p>
</li>
<li>
<p>Converters to published standard messages, documents etc.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>These downstream generated artefacts allow message implementers, software developers, and data managers to build software and systems without any significant training or understanding of archetypes, templates, openEHR, Snomed, or any other complex health informatics concept. Note that any of the above artefacts can be generated in any of the languages for which translations exist, allowing for example, german- and chinese-language XML schemas and programming APIs to be used in relevant environments. The data created by all of the above artefacts can always be converted back into standard openEHR data, meaning that semantic integrity has been retained, without requiring that the architectural complexity be visible in the developer space.</p>
</div>
<div class="paragraph">
<p>In summary, it enables the outputs of a knowledge engineering activity, such as run by a national e-health programme or corporation, to be converted into 'everyday' developer artefacts which can be used to make software, systems and data that obey the knowledge models.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_template_example"><a class="anchor" href="#_template_example"></a>8.2. Template example</h3>
<div class="paragraph">
<p>The easiest way to understand a template is undoubtedly to look at one. Follow these steps:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Select the openEHR_examples profile (<a href="#_obtaining_archetypes">Obtaining Archetypes</a>). You should see <a href="adl_workbench_guide/images/template_initial.png">this</a>. The template <code>openEHR-DEMOGRAPHIC-PERSON.t_patient_simple.v1</code> is shown in the template explorer, on the lower left side of the tool. Note that the identifier is just a normal archetype identifier prefixed with 't_'. This is currently an informal convention, but likely to be adopted if no problems are found with it.</p>
</li>
<li>
<p>Select the template to compile it, you should see <a href="adl_workbench_guide/images/template_compiled.png">this</a>. Notice how once it is compiled, the template is also shown in the archetype explorer at the top, as a specialisation of the <code>openEHR-DEMOGRAPHIC-PERSON.person.v1</code> archetype. You will also notice that sub-parts of the template are shown with a different icon, indicating that they are <em>template components</em>. See below for more on this.</p>
</li>
<li>
<p>Select the Differential View, Node map, you will see the inclusion of various archetypes in slots defined in the parent archetype, as shown <a href="adl_workbench_guide/images/template_differential.png">here</a>.</p>
</li>
<li>
<p>Now have a look at the Node map in Flat View, you will see the effect of the slot filling as shown <a href="adl_workbench_guide/images/template_flat.png">here</a>.</p>
</li>
<li>
<p>To really convince yourself that the template is just a specialisation, try looking at the <a href="adl_workbench_guide/images/template_source.png">Source view</a> while in Differential mode.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In the template explorer, the sub-parts of the template are visible. These are template_components, which are nothing more than archetypes designated for use only inside their parent template. What is really happening here? Consider the two things you typically want to do with a template: a) fill archetype slots with other archetypes (in other words, compose larger structures from re-usable archetype pieces) and b) further constrain the archetypes you chose to fill the slots. Now, remember that when we say 'further constrain', we mean 'further constrain for this template only', i.e. private or template-local constraints. To achieve this further constraining, you do the same thing as you always do: create a specialised archetype. However, in this case, you don&#8217;t want it in the main archetype library, instead you want it associated with the parent template only. This is achieved by doing three things:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Designating it as a template_component artefact, as can be seen in the <a href="adl_workbench_guide/images/template_component_source.png">Source view</a>.</p>
</li>
<li>
<p>Locating the source file with the parent template, typically in a subdirectory dedicated to components of the template, e.g. as shown here. At the moment there is no standard scheme for doing this, although one should emerge due to increased experience with templates.</p>
</li>
<li>
<p>Setting the identifier to something unique to both the template and the component. At the moment, there is no agreed scheme for doing this, so the standard approach of just choosing a name has been used. One scheme for better identifiers is shown in the following example, where the template component identifier is prefixed by 't_' (since it is a kind of template) and then constructed from the concatenation of the parent template identifier, the component identifier (which is just the id of the parent archetype of the template component) and a number (since the same filler archetype might be used more than once in a given template):</p>
<div class="ulist">
<ul>
<li>
<p>Root template: <code>uk.nhs.clinical::openEHR-EHR-COMPOSITION.t_encounter_report.v1</code></p>
</li>
<li>
<p>Template component: <code>uk.nhs.clinical::openEHR-EHR-EVALUATION.t_encounter_report-problem_description-0001.v1</code></p>
</li>
</ul>
</div>
</li>
<li>
<p>This kind of scheme would enable tools to easily generate template component identifiers, since they are not of direct interest to human users.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The above template is pretty simple, having only one level of slot-filling, and including only minimal constraint refinement (in the template components). The key thing to understand is that all of the features of templates are actually just features of the archetype formalism. Many are explained in the <a href="#_about_adl2">About ADL2</a> page. Remember however, as described in the primer above, the use of templates is different from archetypes. Tools for authoring archetypes and templates are likely to impose restrictions on what features are available in each kind of artefact, for example to only allow slot-filling and removals in templates.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_adl_command_line_tools"><a class="anchor" href="#_adl_command_line_tools"></a>9. ADL Command-line Tools</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_adlc"><a class="anchor" href="#_adlc"></a>9.1. adlc</h3>
<div class="sect3">
<h4 id="_overview_5"><a class="anchor" href="#_overview_5"></a>9.1.1. Overview</h4>
<div class="paragraph">
<p>The <code>adlc</code> tool allows you to perform many of the operations available in the ADL Workbench from the command line, enabling the development of scripts and batch processes. The <code>adlc</code> executable is included in the ADL Workbench delivery, in the same location as the adl_workbench executable itself. Its usage is as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>USAGE:
       adlc -s [-q]
       adlc -r [-q]
       adlc -R &lt;reference model name&gt; [-q]
       adlc -b &lt;library name&gt; -l [-q]
       adlc -b &lt;library name&gt; -d [-q]
       adlc &lt;id_pattern&gt; -b &lt;library name&gt; [-flat] [-cfg &lt;file path&gt;] [-q] [-f &lt;format&gt;] -a &lt;action&gt;

    OPTIONS:
       Options should be prefixed with: '-' or '/'

       -q --quiet                : suppress verbose feedback, including configuration information
                                   on startup (Optional)
            --flat               : use flat form of archetype[s] for actions, e.g. path extraction
                                   etc (Optional)
       -s --show_config          : show current configuration and defaults
       -r --list_rms             : generate list of reference models.
       -R --display_rms          : generate view of reference models user-friendly format
       -l --list_archetypes      : generate list of archetypes in current library (use for
                                   further processing)
       -d --display_archetypes   : generate list of archetypes in current library in user-friendly format
       -b --library              : library to use
                                   &lt;library name&gt;: library name
       -f  --format              : output format for generated files (Optional)
                                   &lt;format&gt;: file formats: json | adl | odin | yaml | xml (default = adl)
           --cfg                 : output default configuration file location (Optional)
                                   &lt;file path&gt;: .cfg file path
       -a --action               : action to perform
                                   &lt;action&gt;: validate | serialise | serialize | list
       -? --help                 : Display usage information. (Optional)

    NON-SWITCHED ARGUMENTS:
       &lt;id_pattern&gt;               : archetype id regex</pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_environment"><a class="anchor" href="#_environment"></a>9.1.2. Environment</h4>
<div class="paragraph">
<p>The <code>adlc</code> utility will run on any Windows or Linux/Unix/Macos platform. On Windows, it can be run from cygwin or from within a standard Windows command shell. In the examples below, the command prompt and comments are in the standard Unix/Linux form, i.e. using <code>$</code> and <code>#</code>. On Windows this will of course be something like <code>C:\&gt;</code> and <code>::</code> or <code>REM</code>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_initial_configuration"><a class="anchor" href="#_initial_configuration"></a>9.1.3. Initial configuration</h4>
<div class="paragraph">
<p>The <code>adlc</code> utility relies on a configuration file being in place, either by previous execution of <code>adl_workbench</code> on the same machine, or else by manual construction of the <code>.cfg</code> text file. See here for how to do this.</p>
</div>
</div>
<div class="sect3">
<h4 id="_typical_tasks"><a class="anchor" href="#_typical_tasks"></a>9.1.4. Typical tasks</h4>
<div class="paragraph">
<p>In the following the command line is shown using both the standard 'verbose' form of switches and options (using <code>--</code>) and the short form. The short form is typically used for manual entry at the command line, but the long form is recommended for use in scripts for better readability. Most invocations use the <code>-q</code> (quiet) switch to reduce verbose output.</p>
</div>
<div class="paragraph">
<p>Show the help:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc --help
    $ adlc -h
    $ adlc -?                    <span class="tok-c1"># windows only</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Display the current configuration (shown with typical output):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q --show_config
    $ adlc -q -s

User .cfg file location: C:<span class="tok-se">\U</span>sers<span class="tok-se">\T</span>homas<span class="tok-se">\A</span>ppData<span class="tok-se">\L</span>ocal<span class="tok-se">\o</span>penEHR<span class="tok-se">\a</span>dl_workbench<span class="tok-se">\a</span>dl_workbench.cfg
XML rules file location: C:<span class="tok-se">\U</span>sers<span class="tok-se">\T</span>homas<span class="tok-se">\A</span>ppData<span class="tok-se">\L</span>ocal<span class="tok-se">\o</span>penEHR<span class="tok-se">\a</span>dl_workbench<span class="tok-se">\x</span>ml_rules.cfg

Loaded RM schemas <span class="tok-o">(</span>BMM files<span class="tok-o">)</span>:
        cdisc_core_0.5.0
        cen_en13606_0.95
        hl7_fhir_0.8.3
        openehr_adltest_1.0.2
        openehr_ehr_extract_1.1.0
        cimi_rm_3.0.5

Configured repositories:
        C:<span class="tok-se">\d</span>ev<span class="tok-se">\o</span>penEHR<span class="tok-se">\C</span>KM-mirror
                  openEHR-CKM
        C:<span class="tok-se">\d</span>ev<span class="tok-se">\o</span>penEHR<span class="tok-se">\a</span>dl-archetypes
                  openEHR-ADLref
                  openEHR-BRIDG_POC
                  openEHR-FHIR
                  openEHR-13606_examples
                  openEHR-Demographics
                  openEHR-EHR_Extract
                  openEHR-CKM_2013
                  MOH Spain-MOH_Spain
                  Nehta-Nehta_2014-04-25
        C:<span class="tok-se">\d</span>ev<span class="tok-se">\C</span>IMI<span class="tok-se">\a</span>rchetypes
                  CIMI-mini-CIMI</code></pre>
</div>
</div>
<div class="paragraph">
<p>Most <code>adlc</code> commands relate to a particular library, i.e. logical collection of archetypes. In the output in the above example, the inner names 'openEHR-CKM', &#8230;&#8203; , 'CIMI-mini-CIMI' etc under the heading 'Configured repositories' are the library names. The library to use is specified using the <code>-b | --library</code> option.</p>
</div>
<div class="paragraph">
<p>List all archetypes / templates available in a library:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -l
    $ adlc -q --library openEHR-CKM --list

    openehr-demographic-address.address.v1.0.0
    openehr-demographic-address.address-provider.v1.0.0
    openehr-demographic-address.electronic_communication.v1.0.0
    openehr-demographic-address.electronic_communication-provider.v1.0.0
    openehr-demographic-capability.individual_credentials.v1.0.0
    openehr-demographic-cluster.biometric_identifier_iso.v1.0.0
    openehr-demographic-cluster.birth_data_additional_detail_br.v1.0.0
    openehr-demographic-cluster.high_level_address_other_data_br.v1.0.0
    openehr-demographic-cluster.person_additional_data_br.v1.0.0
    openehr-demographic-cluster.person_additional_data_iso.v1.0.0
    ...</code></pre>
</div>
</div>
<div class="paragraph">
<p>This command generates a flat list of archetype identifiers suitable for use in scripts and batch processing. The <code>-d | --display</code> switch is used for the same purpose, with a more human readable output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -d
    $ adlc -q --library openEHR-CKM --display

    ------------ Archetypes in library <span class="tok-s1">&#39;openEHR-CKM&#39;</span> --------------
        +-- ADDRESS
            +-- address.v1.0.0
                +-- provider.v1.0.0
            +-- electronic_communication.v1.0.0
                +-- provider.v1.0.0
        +-- CAPABILITY
            +-- individual_credentials.v1.0.0
        +-- ITEM
            +-- CLUSTER
                +-- biometric_identifier_iso.v1.0.0
                +-- birth_data_additional_detail_br.v1.0.0
                +-- high_level_address_other_data_br.v1.0.0
                +-- identifier_other_details.v1.0.0
                +-- individual_credentials_iso.v1.0.0
                +-- individual_provider_credentials_iso.v1.0.0
                +-- person_additional_data_br.v1.0.0
                +-- person_additional_data_iso.v1.0.0
                +-- person_birth_data_iso.v1.0.0
                +-- person_death_data_iso.v1.0.0
                +-- person_identifier.v1.0.0
                    +-- provider.v1.0.0
                +-- person_other_birth_data_br.v1.0.0
                +-- person_other_death_data.v1.0.0
                +-- provider_identifier.v1.0.0
                +-- registration_other_data.v1.0.0</code></pre>
</div>
</div>
<div class="paragraph">
<p>The next set of invocations uses the <code>-a | --action</code> switch to indicate a specific action to perform, and a regex (PERL) pattern on the archetype id to indicate which archetypes to apply the action to (note: this is a true regular expression, not a command-line glob expression: use <code>.*</code> to match anything, not just <code>*</code>).</p>
</div>
<div class="paragraph">
<p>The following command lists (<code>--action list</code>) all archetypes whose identifiers match the regex pattern <code>.*problem.*</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -a list .*problem.*
    $ adlc -q --library openEHR-CKM --action list .*problem.*

    openEHR-EHR-COMPOSITION.problem_list.v1.0.0
    openEHR-EHR-EVALUATION.problem.v1.0.0
    openEHR-EHR-SECTION.problem_list.v1.0.0
    openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code></pre>
</div>
</div>
<div class="paragraph">
<p>The following command validates (<code>--action validate</code>) the archetype <code>openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code>. With the -q option, there is no output, because the archetype validates; in verbose mode, warnings will be shown:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -a validate openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0
    $ adlc -q --library openEHR-CKM --action validate openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0
    $ <span class="tok-c1"># no output</span>
    $ adlc --library openEHR-CKM --action validate openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0

    ------------- compiling ARCHETYPE ---- openEHR-EHR-EVALUATION.problem.v1.0.0 -------------
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /data<span class="tok-o">[</span>at0001<span class="tok-p">|</span>structure<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0014<span class="tok-p">|</span>Aetiology<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">1</span>..* same as in reference model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /data<span class="tok-o">[</span>at0001<span class="tok-p">|</span>structure<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0018<span class="tok-p">|</span>Occurrences or exacerbations<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">1</span>..* same as in referen
    ce model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /data<span class="tok-o">[</span>at0001<span class="tok-p">|</span>structure<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0018<span class="tok-p">|</span>Occurrences or exacerbations<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0021<span class="tok-p">|</span>Occurrence/exacerbation<span class="tok-p">|</span><span class="tok-o">]</span>/it
    ems cardinality <span class="tok-m">1</span>..* same as in reference model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /data<span class="tok-o">[</span>at0001<span class="tok-p">|</span>structure<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0026<span class="tok-p">|</span>Related problems<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">1</span>..* same as in reference model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /data<span class="tok-o">[</span>at0001<span class="tok-p">|</span>structure<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0026<span class="tok-p">|</span>Related problems<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0027<span class="tok-p">|</span>Related problem<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">1</span>..*
     same as in reference model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /protocol<span class="tok-o">[</span>at0032<span class="tok-p">|</span>Tree<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">0</span>..* same as in reference model
    WARNING <span class="tok-o">(</span>WCACA<span class="tok-o">)</span> attribute items in object node at /protocol<span class="tok-o">[</span>at0032<span class="tok-p">|</span>Tree<span class="tok-p">|</span><span class="tok-o">]</span>/items<span class="tok-o">[</span>at0033<span class="tok-p">|</span>References<span class="tok-p">|</span><span class="tok-o">]</span>/items cardinality <span class="tok-m">1</span>..* same as in reference model
    ------------- compiling ARCHETYPE ---- openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0 -------------
    WARNING <span class="tok-o">(</span>WOUC<span class="tok-o">)</span> code at0.37 in ontology not used in archetype definition
    WARNING <span class="tok-o">(</span>WOUC<span class="tok-o">)</span> code at0.38 in ontology not used in archetype definition
    WARNING <span class="tok-o">(</span>WOUC<span class="tok-o">)</span> code at0.39 in ontology not used in archetype definition
    ...</code></pre>
</div>
</div>
<div class="paragraph">
<p>The following command serialises (<code>--action serialise</code>) the differential form of the (specialised) archetype <code>openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code> to JSON syntax. The default output format is ADL; YAML, XML and ODIN are also supported.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -a serialise -f json openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0
    $ adlc -q --library openEHR-CKM --action serialise --format json openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code></pre>
</div>
</div>
<div class="paragraph">
<p>The result is as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="json"><span></span>    <span class="tok-p">{</span>
            <span class="tok-nt">&quot;original_language&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;ISO_639-1::en&quot;</span><span class="tok-p">,</span>
            <span class="tok-nt">&quot;translations&quot;</span><span class="tok-p">:</span> <span class="tok-p">[{</span>
                    <span class="tok-nt">&quot;de&quot;</span><span class="tok-p">:</span> <span class="tok-p">{</span>
                            <span class="tok-nt">&quot;language&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;ISO_639-1::de&quot;</span><span class="tok-p">,</span>
                            <span class="tok-nt">&quot;author&quot;</span><span class="tok-p">:</span> <span class="tok-p">[{</span>
                                    <span class="tok-nt">&quot;name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;Jasmin Buck, Sebastian Garde&quot;</span><span class="tok-p">,</span>
                                    <span class="tok-nt">&quot;organisation&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;University of Heidelberg, Central Queensland University&quot;</span>
                            <span class="tok-p">}]</span>
                    <span class="tok-p">},</span>
                    <span class="tok-nt">&quot;pt-br&quot;</span><span class="tok-p">:</span> <span class="tok-p">{</span>
                            <span class="tok-nt">&quot;language&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;ISO_639-1::pt-br&quot;</span><span class="tok-p">,</span>
                            <span class="tok-nt">&quot;author&quot;</span><span class="tok-p">:</span> <span class="tok-p">[{</span>
                                    <span class="tok-nt">&quot;name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;Marco Borges&quot;</span><span class="tok-p">,</span>
                                    <span class="tok-nt">&quot;organisation&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;P2D&quot;</span><span class="tok-p">,</span>
                                    <span class="tok-nt">&quot;email&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;marco.borges@p2d.com.br&quot;</span>
                            <span class="tok-p">}],</span>
                            <span class="tok-nt">&quot;accreditation&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;P2D Health Advisor Council&quot;</span>
                    <span class="tok-p">}</span>
            <span class="tok-p">}],</span>
            <span class="tok-nt">&quot;description&quot;</span><span class="tok-p">:</span> <span class="tok-p">{</span>
                    <span class="tok-nt">&quot;original_author&quot;</span><span class="tok-p">:</span> <span class="tok-p">[{</span>
                            <span class="tok-nt">&quot;name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;Sam Heard&quot;</span><span class="tok-p">,</span>
                            <span class="tok-nt">&quot;organisation&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;Ocean Informatics&quot;</span><span class="tok-p">,</span>
                            <span class="tok-nt">&quot;email&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;sam.heard@oceaninformatics.com&quot;</span><span class="tok-p">,</span>
                            <span class="tok-nt">&quot;date&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;23/04/2006&quot;</span>
    <span class="tok-err">...</span>
       <span class="tok-s2">&quot;parent_archetype_id&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;openEHR-EHR-EVALUATION.problem.v1.0.0&quot;</span><span class="tok-p">,</span>
       <span class="tok-nt">&quot;definition&quot;</span><span class="tok-p">:</span> <span class="tok-p">{</span>
               <span class="tok-nt">&quot;rm_type_name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;EVALUATION&quot;</span><span class="tok-p">,</span>
               <span class="tok-nt">&quot;node_id&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;at0000.1&quot;</span><span class="tok-p">,</span>
               <span class="tok-nt">&quot;attributes&quot;</span><span class="tok-p">:</span> <span class="tok-p">[</span>
                       <span class="tok-p">{</span>
                               <span class="tok-nt">&quot;rm_attribute_name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;value&quot;</span><span class="tok-p">,</span>
                               <span class="tok-nt">&quot;differential_path&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;/data[at0001]/items[at0002.1]&quot;</span><span class="tok-p">,</span>
                               <span class="tok-nt">&quot;children&quot;</span><span class="tok-p">:</span> <span class="tok-p">[</span>
                                       <span class="tok-p">{</span>
                                               <span class="tok-nt">&quot;rm_type_name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;DV_CODED_TEXT&quot;</span><span class="tok-p">,</span>
                                               <span class="tok-nt">&quot;attributes&quot;</span><span class="tok-p">:</span> <span class="tok-p">[</span>
                                                       <span class="tok-p">{</span>
                                                               <span class="tok-nt">&quot;rm_attribute_name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;defining_code&quot;</span><span class="tok-p">,</span>
                                                               <span class="tok-nt">&quot;children&quot;</span><span class="tok-p">:</span> <span class="tok-p">[</span>
                                                                       <span class="tok-p">{</span>
                                                                               <span class="tok-nt">&quot;rm_type_name&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;CODE_PHRASE&quot;</span><span class="tok-p">,</span>
                                                                               <span class="tok-nt">&quot;target&quot;</span><span class="tok-p">:</span> <span class="tok-s2">&quot;ac0.1&quot;</span>
                                                                       <span class="tok-p">}</span>
                                                               <span class="tok-p">],</span>
                                                               <span class="tok-nt">&quot;is_multiple&quot;</span><span class="tok-p">:</span> <span class="tok-kc">false</span>
                                                       <span class="tok-p">}</span>
                                               <span class="tok-p">]</span>
                                       <span class="tok-p">}</span>
                               <span class="tok-p">],</span>
                               <span class="tok-nt">&quot;is_multiple&quot;</span><span class="tok-p">:</span> <span class="tok-kc">false</span>

    <span class="tok-err">...</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>The following command serialises (<code>--action serialise</code>) the flat form (<code>--flat</code>) of the archetype <code>openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code> to ADL syntax.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>    $ adlc -q -b openEHR-CKM -a serialise --flat openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0
    $ adlc -q --library openEHR-CKM --action serialise --flat openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</code></pre>
</div>
</div>
<div class="paragraph">
<p>The result is as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="adl"><span></span><span class="tok-gh">archetype</span><span class="tok-p"> (</span><span class="tok-nc">adl_version</span><span class="tok-o">=</span><span class="tok-l">2.0.6</span><span class="tok-p">;</span> <span class="tok-nc">generated</span><span class="tok-p">)</span>
<span class="tok-nd">    openEHR-EHR-EVALUATION.problem-diagnosis.v1.0.0</span>

<span class="tok-gh">specialize</span>
<span class="tok-nd">    openEHR-EHR-EVALUATION.problem.v1.0.0</span>

<span class="tok-gh">language</span>
    <span class="tok-nc">original_language</span> <span class="tok-o">=</span> <span class="tok-p">&lt;[</span><span class="tok-nd">ISO_639-1</span><span class="tok-p">::</span><span class="tok-nd">en</span><span class="tok-p">]&gt;</span>
    <span class="tok-nc">translations</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
        <span class="tok-p">[</span><span class="tok-s">&quot;de&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
            <span class="tok-nc">language</span> <span class="tok-o">=</span> <span class="tok-p">&lt;[</span><span class="tok-nd">ISO_639-1</span><span class="tok-p">::</span><span class="tok-nd">de</span><span class="tok-p">]&gt;</span>
            <span class="tok-nc">author</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span>
                <span class="tok-p">[</span><span class="tok-s">&quot;name&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;Jasmin Buck, Sebastian Garde&quot;</span><span class="tok-p">&gt;</span>
                <span class="tok-p">[</span><span class="tok-s">&quot;organisation&quot;</span><span class="tok-p">]</span> <span class="tok-o">=</span> <span class="tok-p">&lt;</span><span class="tok-s">&quot;University of Heidelberg, Central Queensland University&quot;</span><span class="tok-p">&gt;</span>
            <span class="tok-p">&gt;</span>
        <span class="tok-p">&gt;</span>
<span class="tok-s">...</span>
<span class="tok-gh">definition</span>
    <span class="tok-nc">EVALUATION</span><span class="tok-p">[</span><span class="tok-nd">at0000.1</span><span class="tok-p">]</span> <span class="tok-o">matches </span><span class="tok-p">{</span>  <span class="tok-c">-- Diagnosis</span>
        <span class="tok-nc">data</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
            <span class="tok-nc">ITEM_TREE</span><span class="tok-p">[</span><span class="tok-nd">at0001</span><span class="tok-p">]</span> <span class="tok-o">matches </span><span class="tok-p">{</span>     <span class="tok-c">-- structure</span>
                <span class="tok-nc">items</span> <span class="tok-kt">cardinality </span><span class="tok-o">matches </span><span class="tok-p">{</span><span class="tok-m">1..*; ordered</span><span class="tok-p">}</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                    <span class="tok-nc">ELEMENT</span><span class="tok-p">[</span><span class="tok-nd">at0002.1</span><span class="tok-p">]</span> <span class="tok-o">matches </span><span class="tok-p">{</span>     <span class="tok-c">-- Diagnosis</span>
                        <span class="tok-nc">value</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                            <span class="tok-nc">DV_CODED_TEXT</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                                <span class="tok-nc">defining_code</span> <span class="tok-o">matches </span><span class="tok-p">{[</span><span class="tok-nd">ac0.1</span><span class="tok-p">]}</span>     <span class="tok-c">-- Any term that &#39;is_a&#39; diagnosis</span>
                            <span class="tok-p">}</span>
                        <span class="tok-p">}</span>
                    <span class="tok-p">}</span>
                    <span class="tok-nc">ELEMENT</span><span class="tok-p">[</span><span class="tok-nd">at0009</span><span class="tok-p">]</span> <span class="tok-kt">occurrences </span><span class="tok-o">matches </span><span class="tok-p">{</span><span class="tok-m">0..1</span><span class="tok-p">}</span> <span class="tok-o">matches </span><span class="tok-p">{</span>    <span class="tok-c">-- Clinical description</span>
                        <span class="tok-nc">value</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                            <span class="tok-nc">DV_TEXT</span> <span class="tok-o">matches </span><span class="tok-p">{</span><span class="tok-m">*</span><span class="tok-p">}</span>
                        <span class="tok-p">}</span>
                    <span class="tok-p">}</span>
                    <span class="tok-nc">ELEMENT</span><span class="tok-p">[</span><span class="tok-nd">at0.32</span><span class="tok-p">]</span> <span class="tok-kt">occurrences </span><span class="tok-o">matches </span><span class="tok-p">{</span><span class="tok-m">0..1</span><span class="tok-p">}</span> <span class="tok-o">matches </span><span class="tok-p">{</span>    <span class="tok-c">-- Status</span>
                        <span class="tok-nc">value</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                            <span class="tok-nc">DV_CODED_TEXT</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                                <span class="tok-nc">defining_code</span> <span class="tok-o">matches </span><span class="tok-p">{</span>
                                    <span class="tok-p">[</span><span class="tok-nd">local</span><span class="tok-p">::</span>
                                    <span class="tok-nc">at0</span><span class="tok-mf">.33</span><span class="tok-p">,</span>         <span class="tok-c">-- provisional</span>
                                    <span class="tok-nc">at0</span><span class="tok-mf">.34</span><span class="tok-err">]</span> <span class="tok-c">-- working</span>
                                <span class="tok-p">}</span>
                            <span class="tok-p">}</span>
                        <span class="tok-p">}</span>
                    <span class="tok-p">}</span>
                <span class="tok-p">}</span>
            <span class="tok-p">}</span>
        <span class="tok-p">}</span>
    <span class="tok-p">}</span></code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_test_tool"><a class="anchor" href="#_the_test_tool"></a>10. The Test Tool</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_overview_6"><a class="anchor" href="#_overview_6"></a>10.1. Overview</h3>
<div class="paragraph">
<p>The test tool in the Workbench is accessible via the Tools&gt;Test Tool menu option, and exited by the 'Close' button on the test tool page. It enables batch execution of test or other routines built into the tool archetypes, and is mainly a facility for regression testing of archetypes.</p>
</div>
</div>
<div class="sect2">
<h3 id="_configuration"><a class="anchor" href="#_configuration"></a>10.2. Configuration</h3>
<div class="paragraph">
<p>The only thing to configure for the test page is the location of the output files. These are various copies and serialisations of archetypes arranged to allow convenient diffing, so as to see the effect of round-trip compile-serialise cycle. To configure the location, select Tools &gt; Options, and set the <code>diff</code> files directory to your desired location. As shown here, the default location is under the platform standard user 'home' location for the application, e.g. on Windows 10, <code>/Users/$user/Local/$app_vendor/$app</code>. If we denote the location you choose as <code>$diff_test</code>, the structure under this will be as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$profile -- i.e. names of your repository profiles, e.g. 'CKM', 'ADL_1.5_test', etc
    source
        orig
        new
    flat
        orig
        new</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_selecting_archetypes"><a class="anchor" href="#_selecting_archetypes"></a>10.3. Selecting archetypes</h3>
<div class="paragraph">
<p>The test page allows you to batch process as many or as few archetypes as you like. You choose them via the check-box column, with higher levels of the hierarchy being choosable in blocks via the associated check box. You can experiment with this. <a href="adl_workbench_guide/images/test_page_arch_select.png">Here</a> is an example showing how the EHR <code>EVALUATION</code> group of archetypes was chosen with two mouse clicks, first the top checkbox, to uncheck all archetypes, then the <code>EVALUATION</code> check-box, to check all <code>EVALUATION</code> archetypes. You can continue checking / unchecking to get exactly the set you want. Once you are satisfied, you can hit the Go button to start the tests running. Each test that succeeds is indicated with a green tick, failed tests with a red cross, and non-applicability with 'n/a'.</p>
</div>
</div>
<div class="sect2">
<h3 id="_what_the_tests_do"><a class="anchor" href="#_what_the_tests_do"></a>10.4. What the tests do</h3>
<div class="paragraph">
<p>The tests are as follows (names are in the columns).</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Parse</strong>: perform a normal compile on the archetype; if there is only a legacy (.adl) file available, an initial .adl to .adls conversion will be done;</p>
</li>
<li>
<p><strong>Regression</strong>: perform a regression comparison of the compilation results with expected results, which are encoded in the archetype details/other_deals section using the "regression" tag. See <a href="https://github.com/openEHR/adl-archetypes/blob/master/ADL2-reference/validity/basics/openEHR-TEST_PKG-ENTRY.VACCD_illegal_concept_code.v1.adls" target="_blank" rel="noopener">this archetype</a> for example. Regression testing is only performed if the Regression button on the user interface is selected by the user, as it involves some extra computing cost, and is only useful for test archetypes found in the test repository, or archetypes similarly including the "regression" item within the details/other_deals.</p>
</li>
<li>
<p><strong>Save legacy</strong>: if there is a .adl (ADL 1.4) file, save it to the directory, to the directory $diff_test/$profile/flat/orig, with a '.adlf' extension;</p>
</li>
<li>
<p><strong>Save flat</strong>: serialise the in-memory flat archetype out to the directory, to the directory $diff_test/$profile/source/new;</p>
</li>
<li>
<p><strong>Compare src</strong>: perform a simple compare between the original source (.adls) file contents and the serialised source form. An exact match indicates identical file length, and usually 100% faithful round-tripping.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The file saving operations above enable the user to make comparisons between the original and serialised (i.e. 'saved' in the sense of a normal editor tool) forms of a source archetype, and also between the original .adl and tool-generated flattened form of an archetype (remembering that all .adl files are essentially flat-form archetypes).</p>
</div>
</div>
<div class="sect2">
<h3 id="_regression_testing"><a class="anchor" href="#_regression_testing"></a>10.5. Regression Testing</h3>
<div class="paragraph">
<p>The regression testing facility is intended to be used with the test archetypes found in the <a href="https://github.com/openEHR/adl-archetypes" target="_blank" rel="noopener">adl-archetypes GitHub repository</a>, in the ADL2-reference directory. This directory contains 150+ archetypes designed specifically to exercise the ADL compiler. Each such archetype is hand-built to either pass or fail, exercising a specific part of the <a href="https://specifications.openehr.org/releases/AM/latest/ADL2.html" target="_blank" rel="noopener">ADL2 specification</a>.</p>
</div>
<div class="paragraph">
<p>Regression testing is turned via a button on the Test page, and the results show up in the second column, as shown here. A green 'tick' indicates that the regression test passed, which means that the compilation result was as indicated in the archetype. The possible results indicated within an archetype are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>PASS - the archetype should pass compilation with no errors or warnings;</p>
</li>
<li>
<p>FAIL - the archetype should fail compilation, typically for extremely basic syntax reasons that do not have a specific validity code;</p>
</li>
<li>
<p>a validity code, e.g. "VACDF" - taken from the AOM 1.5 specification, indicating the validity condition that this archetype violates;</p>
</li>
<li>
<p>a warning code, e.g. "WOUC" - indicating the expected warning, even though the archetype will pass compilation.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The main purpose of regression tests is to test the compiler software, and particularly changes in the software. After any change is made, the regression tests should be executed to find any failures. The validity code being tested is indicated in the results column.</p>
</div>
<div class="paragraph">
<p>The regression testing facility has been designed to be independent of any particular tool technology, and the logic implemented in the Eiffel ADL Workbench can easily be replicated in Java, .Net and other tools.</p>
</div>
</div>
<div class="sect2">
<h3 id="_viewing_results"><a class="anchor" href="#_viewing_results"></a>10.6. Viewing results</h3>
<div class="paragraph">
<p>The files described above are saved in a way to make it convenient to look at diffs using a typical 'diff' tool capable of diffing same-named files in sibling directories. This is useful to assess round-tripping correctness and to find bugs. For the examples here, we have used the open source <a href="http://winmerge.org/" target="_blank" rel="noopener">Winmerge tool</a>, but you can use any tool you like.</p>
</div>
<div class="paragraph">
<p>Based on the selection of <code>EVALUATION</code> archetypes in the CKM repository, here is the resulting directory structure. Below are some example diff views.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_iso_13606"><a class="anchor" href="#_iso_13606"></a>11. ISO 13606</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_overview_7"><a class="anchor" href="#_overview_7"></a>11.1. Overview</h3>
<div class="paragraph">
<p>A draft version of the ISO 13606-1:2008 schema for the AWB has been developed, along with some example archetypes. This is intended to show how ADL / AOM 2 functions for archetypes built on a different reference model, and also to enable organisations working with ISO 13606 to have a more formal tool basis for developing archetypes, templates and generally migrating to ADL/AOM 2. The entire ISO 13606 model can be viewed in the AWB RM schema and Class tools, and comparisons can be made with classes in the openEHR reference model.</p>
</div>
</div>
<div class="sect2">
<h3 id="_iso_13606_schema_for_awb"><a class="anchor" href="#_iso_13606_schema_for_awb"></a>11.2. ISO 13606 schema for AWB</h3>
<div class="paragraph">
<p>An initial schema for ISO 13606-1 has been included in the set of RM schemas used by AWB. This was produced by Christoph Rinner (Medical University of Vienna) and Thomas Beale (Ars Semantica). The definitive copy of this resides in the <a href="https://github.com/openEHR/reference-models">openEHR reference-models GitHub repository</a>. If you are interested in being added to the committers list to work on this schema, please email webmaster at openehr.org.</p>
</div>
<div id="rm_schema_en13606" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/rm_schema_en13606.png" alt="rm schema en13606">
</div>
<div class="title">Figure 52. ISO 13606 BMM</div>
</div>
</div>
<div class="sect2">
<h3 id="_comparison_of_13606_and_openehr_classes"><a class="anchor" href="#_comparison_of_13606_and_openehr_classes"></a>11.3. Comparison of 13606 and openEHR Classes</h3>
<div class="paragraph">
<p>The entire ISO 13606 model can be viewed in the AWB RM schema and Class tools, and comparisons can be made with classes in the openEHR reference model.</p>
</div>
<div id="rm_schema_tool_duplex_classes" class="imageblock text-center text-center">
<div class="content">
<img src="adl_workbench_guide/images/rm_schema_tool_duplex_classes.png" alt="rm schema tool duplex classes">
</div>
<div class="title">Figure 53. ISO 13606 BMM</div>
</div>
</div>
<div class="sect2">
<h3 id="_iso_13606_archetypes"><a class="anchor" href="#_iso_13606_archetypes"></a>11.4. ISO 13606 archetypes</h3>
<div class="paragraph">
<p>Some initial 13606 archetypes have been created in the <a href="https://github.com/openEHR/adl-archetypes/tree/master/Example/EN13606" target="_blank" rel="noopener">adl-archetypes Github repository</a>. These are currently purely experimental and unreviewed.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_fhir"><a class="anchor" href="#_fhir"></a>12. FHIR</h2>
<div class="sectionbody">
<div class="paragraph">
<p>(coming soon)</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_support_and_contributing"><a class="anchor" href="#_support_and_contributing"></a>13. Support and Contributing</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_i_have_a_problem"><a class="anchor" href="#_i_have_a_problem"></a>13.1. I have a problem&#8230;&#8203;</h3>
<div class="sect3">
<h4 id="_with_the_adl_workbench"><a class="anchor" href="#_with_the_adl_workbench"></a>13.1.1. with the ADL Workbench</h4>
<div class="paragraph">
<p>You can report an issue on the openEHR <a href="https://specifications.openehr.org/jira/AWBPR" target="_blank" rel="noopener">AWB PR tracker</a>. Please select the appropriate component, e.g. User interface, Validator, etc.</p>
</div>
</div>
<div class="sect3">
<h4 id="_with_an_archetype"><a class="anchor" href="#_with_an_archetype"></a>13.1.2. with an archetype</h4>
<div class="paragraph">
<p>If it is a CKM archetype, and it really appears to be an error or deficiency, you can:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Submit a comment to CKM, with the following steps:</p>
<div class="ulist">
<ul>
<li>
<p>Go to <a href="https://www.openehr.org/ckm">CKM</a> and login</p>
</li>
<li>
<p>Navigate to the archetype in the left hand explorer and select (double-click)</p>
</li>
<li>
<p>Now right-click-Discussion.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Discuss it on the <a href="https://www.openehr.org/digital_media/mailinglists/" target="_blank" rel="noopener">openehr-clinical mailing list</a>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If it is an ADL2 test archetype, create a problem report on the Jira AWB PR tracker, with component set to 'Test archetypes'.</p>
</div>
</div>
<div class="sect3">
<h4 id="_with_this_online_documentation"><a class="anchor" href="#_with_this_online_documentation"></a>13.1.3. with this online documentation</h4>
<div class="paragraph">
<p>If your problem is that you can&#8217;t find an answer to what you are looking for, please report this on the Jira AWB PR tracker, with component set to 'Documentation'. If you really need an answer, don&#8217;t be afraid to post on the <a href="https://www.openehr.org/digital_media/mailinglists/" target="_blank" rel="noopener">openehr-technical mailing list</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_with_the_openehr_specifications"><a class="anchor" href="#_with_the_openehr_specifications"></a>13.1.4. with the openEHR specifications</h4>
<div class="paragraph">
<p>Please visit the {projects/SPECPR}[dedicated Jira tracker^].</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_how_can_i_contribute"><a class="anchor" href="#_how_can_i_contribute"></a>13.2. How can I contribute?</h3>
<div class="paragraph">
<p>You are already a saint for asking. Most likely your interest is in one of the areas of: clinical archetypes, ADL/AOM tooling, or specifications. Useful things you can do include the following.</p>
</div>
<div class="sect3">
<h4 id="_i_can_help_with_clinical_demographic_archetypes"><a class="anchor" href="#_i_can_help_with_clinical_demographic_archetypes"></a>13.2.1. I can help with clinical / demographic archetypes</h4>
<div class="paragraph">
<p>If your interest is in building and/or reviewing the CKM archetypes, or you want to offer new archetypes to CKM, please either login to CKM and join existing discussions, and/or contact the CKM editors and/or start a discussion on the <a href="https://www.openehr.org/digital_media/mailinglists/" target="_blank" rel="noopener">openehr-clinical mailing list</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_i_want_to_help_improving_adl_aom_2"><a class="anchor" href="#_i_want_to_help_improving_adl_aom_2"></a>13.2.2. I want to help improving ADL / AOM 2</h4>
<div class="paragraph">
<p>The single most useful thing you can do is to help build up the <a href="https://github.com/openEHR/adl-archetypes" target="_blank" rel="noopener">test archetype Git repository</a>. We need more archetypes to test more ADL2 use cases. Most of the validity conditions have at least one or two archetypes, but some conditions can be triggered by different kinds of archetypes. If you see you can post a message on the <a href="https://www.openehr.org/digital_media/mailinglists/" target="_blank" rel="noopener">openehr-technical mailing list</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_i_can_help_improving_the_tool"><a class="anchor" href="#_i_can_help_improving_the_tool"></a>13.2.3. I can help improving the tool</h4>
<div class="paragraph">
<p>The ADL Workbench is written in the Eiffel language (<a href="https://github.com/openEHR/adl-tools" target="_blank" rel="noopener">Git repository</a>). If you are interested in working on it, please indicate there.</p>
</div>
<div class="paragraph">
<p>A newer tool called Archie (<a href="https://github.com/openEHR/archie" target="_blank" rel="noopener">Git repository</a>) in Java fully implements AOM2, ADL2, BMM and ODIN.</p>
</div>
</div>
<div class="sect3">
<h4 id="_i_would_like_to_port_the_tool_to_another_language"><a class="anchor" href="#_i_would_like_to_port_the_tool_to_another_language"></a>13.2.4. I would like to port the tool to another language</h4>
<div class="paragraph">
<p>As a starting point, it is suggested you post an initial enquiry on the <a href="https://www.openehr.org/digital_media/mailinglists/" target="_blank" rel="noopener">openehr-technical mailing list</a>.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_release_history"><a class="anchor" href="#_release_history"></a>14. Release History</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_04_december_2014_adl_2_0_5_github_tag_adl_2_0_5_jira_new_features_issues_fixed"><a class="anchor" href="#_04_december_2014_adl_2_0_5_github_tag_adl_2_0_5_jira_new_features_issues_fixed"></a>14.1. 04 December 2014 - ADL 2.0.5 (Github tag adl_2.0.5) (Jira - new features; issues fixed)</h3>
<div class="ulist">
<ul>
<li>
<p>Archetype Object Model / compiler:</p>
<div class="ulist">
<ul>
<li>
<p>New flattener, with specialise-and-clone, numerous edge cases fixed.</p>
</li>
<li>
<p>Improvements in specialised archetype validation</p>
</li>
<li>
<p>New meta-data items now supported:</p>
<div class="ulist">
<ul>
<li>
<p><code>rm_release=n.m.p</code> - top-level meta-data</p>
</li>
<li>
<p><code>original_publisher: String</code> - name of original publishing organisation</p>
</li>
<li>
<p><code>original_namespace: String</code> - namespace of original publishing organisation</p>
</li>
<li>
<p><code>custodian_organisations: String</code> - name of the current custodian organisation</p>
</li>
<li>
<p><code>custodian_namespace: String</code> - namespace of current custodian organisation</p>
</li>
<li>
<p>`licence: String - short text and URL pointing to licence under which this artefact is available</p>
</li>
<li>
<p><code>ip_acknowledgements: Map&lt;String, String&gt;</code> - keyed list of 3rd party IP acknowledgements, each consisting of a single word key, and a short text and URL pointing to the online text describing how the IP available for this artefact.</p>
</li>
<li>
<p><code>conversion_details: Map&lt;String, String&gt;</code> - keyed list of values indicating details of conversion from an external artefact, where applicable.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Tool functionality:</p>
<div class="ulist">
<ul>
<li>
<p>New method of specifying archetype repositories uses self-describing repository/library structure</p>
</li>
<li>
<p>Git / Github integration</p>
</li>
<li>
<p>One-click template creation</p>
</li>
<li>
<p>Automatic conversion of ADL 1.4 <code>other_details</code> meta-data to ADL2 form</p>
</li>
</ul>
</div>
</li>
<li>
<p>Visualisation:</p>
<div class="ulist">
<ul>
<li>
<p>Lazy load template visualiser mode to handle very large template structures</p>
</li>
<li>
<p>Improved colour / font scheme in inheritance visualisation mode</p>
</li>
<li>
<p>New Description / Governance sub-tab containing ADL 2 meta-data.</p>
</li>
<li>
<p>New Clients/Suppliers top-level tab showing client (user) archetypes containing use_archetype references to the current archetype, and supplier archetypes, i.e. archetypes for which the current archetype has a use_archetype reference.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_05_march_2014_adl_1_5_beta_release_10_git_tag_1_5beta10_jira"><a class="anchor" href="#_05_march_2014_adl_1_5_beta_release_10_git_tag_1_5beta10_jira"></a>14.2. 05 March 2014 ADL 1.5 beta Release 10 (Git tag 1.5beta10) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>Archetype Object Model / compiler:</p>
<div class="ulist">
<ul>
<li>
<p>All domain-specific AOM types for Quantities, Ordinals and Term-lists replaced by new AOM standard tuple representation</p>
</li>
<li>
<p>New internal coding system - uses id-codes (node identification), at-codes (values) and ac-codes (value sets)</p>
</li>
<li>
<p>Dedicated ADL 1.4 &#8658; ADL 1.5 converter implemented, following published conversion rules</p>
</li>
<li>
<p>Namespaced identifiers implemented as per openEHR Knowledge Artefact Specification</p>
</li>
<li>
<p>Terminology references are all URIs, following IHTSDO model</p>
</li>
<li>
<p>Value-sets are moved from archetype definition to archetype terminology</p>
</li>
</ul>
</div>
</li>
<li>
<p>Visualisation:</p>
<div class="ulist">
<ul>
<li>
<p>Hierarchical, colourised terminology and value-set viewer</p>
</li>
<li>
<p>ADL source in various phases of conversion visible and editable</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_9_april_2013_adl_1_5_beta_release_9_git_tag_1_5beta9_jira"><a class="anchor" href="#_9_april_2013_adl_1_5_beta_release_9_git_tag_1_5beta9_jira"></a>14.3. 9 April 2013 ADL 1.5 beta Release 9 (Git tag 1.5beta9) (Jira)</h3>

</div>
<div class="sect2">
<h3 id="_2_aug_2012_adl_1_5_beta_release_8_git_commit_4e6b696d1ad31a8269aa71e85aca4fee38172eef_was_svn_rev_1826_jira"><a class="anchor" href="#_2_aug_2012_adl_1_5_beta_release_8_git_commit_4e6b696d1ad31a8269aa71e85aca4fee38172eef_was_svn_rev_1826_jira"></a>14.4. 2 Aug 2012 ADL 1.5 beta Release 8 (Git commit 4e6b696d1ad31a8269aa71e85aca4fee38172eef (was SVN rev 1826)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>GUI changes:</p>
<div class="ulist">
<ul>
<li>
<p>All explorers now modern Grid controls;</p>
</li>
<li>
<p>Show archetype versions in UI;</p>
</li>
<li>
<p>Add collapsable control panel for main GRID Tree view controls;</p>
</li>
<li>
<p>Archetype specalisation now visualised in grey / dark grey / colour, and switchable in UI;</p>
</li>
<li>
<p>Automatic expand to logical leaf nodes (<code>ELEMENTs</code> in openEHR);</p>
</li>
<li>
<p>Add property colourisation, based on classifications defined in RM schema files;</p>
</li>
<li>
<p>Power-expand collapsed nodes of logical leaf types that are not literally leaves in the Grid tree, e.g. ELEMENT in openEHR models;</p>
</li>
<li>
<p>Fix the multi-column width display problem;</p>
</li>
<li>
<p>Numerous changes to icons.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Tool behaviour changes:</p>
<div class="ulist">
<ul>
<li>
<p>Fix bug where invalid profile on start-up caused a crash - now tool removes invalid profiles, and then opens valid profile, or else starts as for first time;</p>
</li>
<li>
<p>Correct XML report generation dialogs and behaviour;</p>
</li>
<li>
<p>Correct AWBPR-22 export of flat file was overwriting differential file;</p>
</li>
</ul>
</div>
</li>
<li>
<p>Installation improvements:</p>
<div class="ulist">
<ul>
<li>
<p>Correct problems with Windows installers, where local visual preferences (e.g. tooltips, style of visual controls etc) were being ignored.</p>
</li>
</ul>
</div>
</li>
<li>
<p>RM Schema changes:</p>
<div class="ulist">
<ul>
<li>
<p>Major update to CEN 13606 and TS 14796 data types schemas; the latter is distinct from the 21090 DT schema;</p>
</li>
<li>
<p>Add property classification system to schemas: now properties can be classified as 'data' (default), 'runtime' and 'infrastructure';</p>
</li>
</ul>
</div>
</li>
<li>
<p>Compiler changes:</p>
<div class="ulist">
<ul>
<li>
<p>Correct errors in term-binding logic - terms can now correctly be bound to at-codes, ac-codes, paths and paths created due to use_nodes;</p>
</li>
<li>
<p>Correct path computation where there are use_node internal references;</p>
</li>
<li>
<p>Add support for detecting model classification in other_details part of archetype description: e.g. <code>["model_level"] = &lt;"reference"&gt;</code> indicates a reference archetype a la CIMI;</p>
</li>
<li>
<p>Remove VACMC1 error from parser (the rule which prevents member objects in a container having <code>occurrences = 0..*</code> when the owning attribute cardiality is limited);</p>
</li>
<li>
<p>Fix a bug in the dADL parser that was preventing lists which have multiple members, and also a (superfluous) ellipsis are accepted silently;</p>
</li>
<li>
<p>Add a post-parse AOM structure building stage to compiler, to allow RM-independent parsing;</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_29_jun_2012_adl_1_5_beta_release_7_git_commit_fc5e9b292bb83a5d725074c53f16ad4b3ccc25b6_was_svn_rev_1757_jira"><a class="anchor" href="#_29_jun_2012_adl_1_5_beta_release_7_git_commit_fc5e9b292bb83a5d725074c53f16ad4b3ccc25b6_was_svn_rev_1757_jira"></a>14.5. 29 Jun 2012 ADL 1.5 beta Release 7 (Git commit fc5e9b292bb83a5d725074c53f16ad4b3ccc25b6 (was SVN rev 1757)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>GUI changes:</p>
<div class="ulist">
<ul>
<li>
<p>Completely rewritten archetype definition visualiser, based on folding grid. Configurable colour-coded RM properties view based on RM schema attribute classifications. Context menu access to path map row for current node; ontology entry for current node. For Archetype slot nodes, the context menu includes all matching archetypes, to be displayed.</p>
</li>
<li>
<p>Numerous changes to icons.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Integration changes:</p>
<div class="ulist">
<ul>
<li>
<p>openEHR Terminology now imported on startup and used to correctly display DV_QUANTITY properties and other relevant constraints.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Compiler changes:</p>
<div class="ulist">
<ul>
<li>
<p>Correct Internal Ref node validation and flattening, so that node override can be used and flattening works properly.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_29_mar_2012_adl_1_5_beta_release_6_git_commit_50c1ac7d62407ed79b12a932b6a5ce613219f599_was_svn_rev_1677_jira"><a class="anchor" href="#_29_mar_2012_adl_1_5_beta_release_6_git_commit_50c1ac7d62407ed79b12a932b6a5ce613219f599_was_svn_rev_1677_jira"></a>14.6. 29 Mar 2012 ADL 1.5 beta Release 6 (Git commit 50c1ac7d62407ed79b12a932b6a5ce613219f599 (was SVN rev 1677)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>GUI changes:</p>
<div class="ulist">
<ul>
<li>
<p>Improve UI for turning on and off line numbers in source and serialised views.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Output:</p>
<div class="ulist">
<ul>
<li>
<p>Add YAML 1.1 output; validates at appspot online YAML parser.</p>
</li>
<li>
<p>Correct some bugs in JSON output.</p>
</li>
<li>
<p>Add batch generation of all output types.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Compiler changes:</p>
<div class="ulist">
<ul>
<li>
<p>Template type template_component renamed to template_overlay.</p>
</li>
<li>
<p>Terminologies_available part of <code>ontology</code> section is now ignored in 1.4 and not used in 1.5.</p>
</li>
<li>
<p>Loosen <code>ARCHETYPE_ID</code> valid patterns to allow for closure names (middle part of first segment in id) to be a number like '13606'.</p>
</li>
<li>
<p>Add support for documenting non-archetyped RM paths in the annotations section.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_29_nov_2011_adl_1_5_beta_release_5_git_commit_740a0d96eee071077b3e5a250c9c0686184ab446_was_svn_rev_1656_jira"><a class="anchor" href="#_29_nov_2011_adl_1_5_beta_release_5_git_commit_740a0d96eee071077b3e5a250c9c0686184ab446_was_svn_rev_1656_jira"></a>14.7. 29 Nov 2011 ADL 1.5 beta Release 5 (Git commit 740a0d96eee071077b3e5a250c9c0686184ab446 (was SVN rev 1656)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>GUI changes:</p>
<div class="ulist">
<ul>
<li>
<p>The Class Tool now includes a properties view, an ancestors view and a descendants view. All views contain class icons that are clickable.</p>
</li>
<li>
<p>There is now an RM Schema meta-data viewing tool.</p>
</li>
<li>
<p>Numerous small UI changes and improvements, including modal selection history - the Tool back and forward buttons work in a similar way to those of a web browser, no matter what the active tools is.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Reporting:</p>
<div class="ulist">
<ul>
<li>
<p>There is now a Statistics facility at the Archetype Library and Archetype Tool levels, providing detailed statistics on use of RM classes and terminology in archetypes.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Ouput formats:</p>
<div class="ulist">
<ul>
<li>
<p>JSON is now supported as an output format for differential and flat archetypes. Note that occurrences, cardinality and existence are serialised with single Strings, e.g. "0..1", "1..*" etc.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_8_sep_2011_adl_1_5_beta_release_4_git_commit_a835702bca29da3a7349cc3a09118913b2625cd9_was_svn_rev_1603_jira"><a class="anchor" href="#_8_sep_2011_adl_1_5_beta_release_4_git_commit_a835702bca29da3a7349cc3a09118913b2625cd9_was_svn_rev_1603_jira"></a>14.8. 8 Sep 2011 ADL 1.5 beta Release 4 (Git commit a835702bca29da3a7349cc3a09118913b2625cd9 (was SVN rev 1603)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>GUI changes:</p>
<div class="ulist">
<ul>
<li>
<p>The GUI is now docking-based, allowing greater flexibility in placement of visual components. Visually, multiple archetypes can now be loaded simultaneously, and docked side-by-side for visual comparison. This visual layout is the same model used in most modern tabbed editing and browsing tools. Underneath, the tool now properly supports multiple open archetypes and templates.</p>
<div class="ulist">
<ul>
<li>
<p>A new archetype tool is created either using ctrl-T (as for most web browsers) or from the new context (right click) menu available on an archetype or template in the explorer tol on the left.</p>
</li>
<li>
<p>The language choice combo, and flat/differential view button are therefore now on each individual archetype tool, rather than being tool-wide.</p>
</li>
<li>
<p>The status, error and statistics tools are now docked along the bottom and popup on left-click, in the manner typical of most programming IDEs.</p>
</li>
<li>
<p>The profile chooser has moved to the top-left, in the place typically used to select 'projects' in most IDEs</p>
</li>
<li>
<p>The 'test' tool is now shown as a docked component minimised on the right hand side, where it used to be. However, now it is a normal dockable component, so can be arranged in the same screen space as the other components, or even popped out into its own independent window, e.g. to be displayed on a separate screen.</p>
</li>
<li>
<p>The docking tool layout is currently remembered over sessions by being saved in its own file. Because of the inherent complexity of docking and interaction with the operating system, the layout can occasionally disappear or seem non-sensical, usually due to a problem with the file. A 'reset visual layout' option is available from the View menu to correct this.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>New Reference Model Browser:</p>
<div class="ulist">
<ul>
<li>
<p>A new tool on the left hand side of the main screen allows multiple Reference Models to be browsed and explored. Clicking on any class causes the class to be displyed in the Class Tool, in a new tab.</p>
</li>
<li>
<p>Classes from different RMs can be viewed side-by-side using different class tools and docking system to arrange the panes.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Enhanced search bar:</p>
<div class="ulist">
<ul>
<li>
<p>The address bar now supports searching for classes as well as archetpes, depending on which of the RM browser or Archetype Library is active.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Archetype definition visualisation enhanced:</p>
<div class="ulist">
<ul>
<li>
<p>It is now possible to include a set of RM-specific icons for visualising the definition tree. These icons have to be located in the install area icons/&lt;rm_name&gt; directory, e.g. <code>icons/openehr</code>. Viewing with these icons or the generic ones is now an option available from the option dialog and also from the definition node tree.</p>
</li>
<li>
<p>The reference model attributes can now be visualised independently of other changes to the view.</p>
</li>
<li>
<p>Class tool enhanceed:</p>
<div class="ulist">
<ul>
<li>
<p>Left-clicking on a class node in the explorer on the left populates the 'class tool' (now just another tool, tabbed with the archetype tools) with the compositional 'closure' of the chosen class. This is visualised as a tree of alternating type nodes and property nodes, in a similar to the node visualisation of an archetype.</p>
</li>
<li>
<p>Some of the class nodes are abstract, or even if concrete, have subtypes defined. Right-clicking on these nodes in the class tool, brings up a context menu containing the subtypes defined in the reference model, and selecting one causes re-population of that node in the tree downward with the chosen type.</p>
</li>
<li>
<p>As with the archetype tool, right clicking on a class node allows a new tool to be created instead of populating the existing one. Class tools can also be delted from the docking container.</p>
</li>
</ul>
</div>
</li>
<li>
<p>ADL/XML serialisation version now choosable in main GUI window, rather than only in the options. This option changes the format of ADL and XML output to conform to the chosen ADL release (1.4 or 1.5)</p>
</li>
</ul>
</div>
</li>
<li>
<p>Serialisation: dADL and rule-driven XML added:</p>
<div class="ulist">
<ul>
<li>
<p>Empty items are no longer populated, e.g. 'contributors'.</p>
</li>
<li>
<p>Added dADL (the openEHR object serialisation syntax, identical in aim to JSON) serialisation, where an archetype object (AOM) structure can be serialised to a pure dADL structure. A special set of P_XXX classes were added to simplify some fields, e.g. occurrences etc to Strings, since otherwise they take up many lines of dADL. The use of this feature is for post-parsed archetypes to be stored in a pure object format for fast retrieval later, bypassing the main compiler.</p>
</li>
<li>
<p>Added proof-of-concept XML serialisation, also based on the P_XXX classes, as well as a rule file which enables control over XML what object properties are output as XML attributes, and other options. This XML is not currently synchronsed to either the published ADL 1.4 XSD, or any ADL 1.5 XSD.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Compiler</p>
<div class="ulist">
<ul>
<li>
<p>Archetype validation is now 3 phases, where the last phase operates on the flattened archetype.</p>
</li>
<li>
<p>Source code: tools upgraded to Eiffel 6.8 GPL.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_14_jan_2011_adl_1_5_beta_release_3_git_commit_65afe78825f9e2dc2d5e7865d6c649debe205d07_was_svn_rev_1405_jira"><a class="anchor" href="#_14_jan_2011_adl_1_5_beta_release_3_git_commit_65afe78825f9e2dc2d5e7865d6c649debe205d07_was_svn_rev_1405_jira"></a>14.9. 14 Jan 2011 ADL 1.5 beta Release 3 (Git commit 65afe78825f9e2dc2d5e7865d6c649debe205d07 (was SVN rev 1405)) (Jira)</h3>
<div class="ulist">
<ul>
<li>
<p>Archetype annotations implemented:</p>
<div class="ulist">
<ul>
<li>
<p>details;</p>
</li>
<li>
<p>example archetypes;</p>
</li>
<li>
<p>specifications: common IM (section 7), ADL 1.5 (section 9.8);</p>
</li>
</ul>
</div>
</li>
<li>
<p>More flexible RM schemas, now nestable and clearer syntax (details);</p>
</li>
<li>
<p>Signficantly improved GUI:</p>
<div class="ulist">
<ul>
<li>
<p>main screen;</p>
</li>
<li>
<p>Easier loading and viewing of RM schema files, with new dedicated dialog;</p>
</li>
<li>
<p>Improved dialog for configuring repository profiles;</p>
</li>
<li>
<p>fixed various bugs, including wrong UTF rendering in keywords and contributors, archetype and template selection problems;</p>
</li>
</ul>
</div>
</li>
<li>
<p>Added initial version of OPERATIONAL_TEMPLATE class;</p>
</li>
<li>
<p>Fixed a bug in path generation;</p>
</li>
<li>
<p>Migrate to dADL format configuration .cfg file, providing greater readability and flexibility (details);</p>
</li>
<li>
<p>Upgraded source code to Eiffel 6.7.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_28_sep_2010_adl_1_5_beta_release_2_git_commit_b0b8381134fdcdd90cdc0a68e02ec2e688ed0f0d_was_svn_rev_1247"><a class="anchor" href="#_28_sep_2010_adl_1_5_beta_release_2_git_commit_b0b8381134fdcdd90cdc0a68e02ec2e688ed0f0d_was_svn_rev_1247"></a>14.10. 28 Sep 2010 ADL 1.5 beta Release 2 (Git commit b0b8381134fdcdd90cdc0a68e02ec2e688ed0f0d (was SVN rev 1247)):</h3>
<div class="ulist">
<ul>
<li>
<p>Added regression testing facility so that any archetype can now include in its description section an expected compilation result, such as 'PASS', 'FAIL', or a validity code e.g. 'VSONIL'. This enables all the current test archetypes (found here) to be used by any compiler in any language in the same way. The ADL Workbench now has a button which turns on this facility on the test page. See Test tool page for details;</p>
</li>
<li>
<p>Fixed bugs that prevented constraint bindings being read in correctly, and also errors being correctly reported from the parsing of the archetype ontology;</p>
</li>
<li>
<p>improve validation of languages, now minimally enforce IETF language-tag format (RFC 5646 - this is the one that defines strings like "en" and "en-GB". This class contains functions for exact matching, validation and matching a language subtag e.g. "en" to a full tag e.g. "en" or "en-GB", "en-AU" etc);</p>
</li>
<li>
<p>fixed a bug in the 2nd pass validator that was sometimes preventing subtrees in specialised archetypes from being correctly validated against their correspondents in parent archetypes</p>
</li>
<li>
<p>Fix various launch / shut-down / minimise annoyances, especially on multiple screen systems;</p>
</li>
<li>
<p>Fix node map rendering problem where multiple value attributes with existence = 1 not showing up in red but pink. Existence is now taken into account for this rendering.</p>
</li>
<li>
<p>Added profile chooser combo box to archetype explorer on main page;</p>
</li>
<li>
<p>Archetype id search facility added to id control on main page. This allows any id substring to be matched to available archetypes, generating a picklist for the user. E.g. the user could enter 'exam' and the list will show all archetypes containing this string;</p>
</li>
<li>
<p>Improved validation for VSONIR cases; comparison of ranges for existence, occurrences and cardinality comparison in specialised archetype validation no longer treats equal ranges as a legal redefinition (since in terms of constraint logic, only strictly narrower ranges are valid redefinitions);</p>
</li>
<li>
<p>moved error database to files under $app_install/error_db;</p>
</li>
<li>
<p>Addition and refactoring of code base to create new applications:</p>
<div class="ulist">
<ul>
<li>
<p>GUI Dadl testing app;</p>
</li>
<li>
<p>ADL compiler app simulating app, designed to show within the Eiffel environment what kind of calls an application (possibly written in another language) would make to use the compiler;</p>
</li>
<li>
<p>ADL compiler C lib-generating, which generates the compiler as a pure C library in both static and dynamic link forms, with all GUI removed. This can be directly linked in with applications written in C, C++, Java, via JNI, or any .Net language.</p>
</li>
<li>
<p>Example application written in C using the statically linked form of the above library, to illustrate its use.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Release notes now displayed in default browser at installation time;</p>
</li>
<li>
<p>Updates to help pages, including Mac installer and regression test facility.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_11_aug_2010_adl_1_5_beta_release_1_git_commit_569646fc6480548311e33a9a16d2bc4e12c94597_was_svn_rev_1105"><a class="anchor" href="#_11_aug_2010_adl_1_5_beta_release_1_git_commit_569646fc6480548311e33a9a16d2bc4e12c94597_was_svn_rev_1105"></a>14.11. 11 Aug 2010 ADL 1.5 beta Release 1 (Git commit 569646fc6480548311e33a9a16d2bc4e12c94597 (was SVN rev 1105)):</h3>
<div class="ulist">
<ul>
<li>
<p>Improved validation, with code-based error messages matching ADL and AOM 1.5 draft specifications (see bottom of page);</p>
</li>
<li>
<p>Support for referencing from one archetype to another without slots;</p>
</li>
<li>
<p>Support for ADL 1.5 templates, including slot-filling and exclusions;</p>
</li>
<li>
<p>Separate explorers for archetypes and templates;</p>
</li>
<li>
<p>Multiple RM schemas can be loaded and managed in the options dialog;</p>
</li>
<li>
<p>Archetype files can now be arranged anywhere on the file-system; compiler uses RM and specialisation relationships to build directory in tool;</p>
</li>
<li>
<p>Repositories are now defined / selected using profiles;</p>
</li>
<li>
<p>Archetype search facility;</p>
</li>
<li>
<p>An initial 13606 schema is available, allowing validation of EN 13606 archetypes.</p>
</li>
<li>
<p>Test function changed to prevent any .adl file overwriting; instead, outputs files for viewing in diff tools.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_22_mar_2009_adl_1_5_preview_release_1_5_0_git_commit_f9aa528c92824cf363a358930c4740a5190f3b7b_was_svn_rev_851"><a class="anchor" href="#_22_mar_2009_adl_1_5_preview_release_1_5_0_git_commit_f9aa528c92824cf363a358930c4740a5190f3b7b_was_svn_rev_851"></a>14.12. 22 Mar 2009 ADL 1.5 Preview Release 1.5.0 (Git commit f9aa528c92824cf363a358930c4740a5190f3b7b (was SVN rev 851)):</h3>
<div class="ulist">
<ul>
<li>
<p>performs stricter validation than previous versions, now reporting 40 syntax errors, 47 validity errors, and 4 validity warnings.</p>
</li>
<li>
<p>Errors are more clearly differentiated into the following categories:</p>
<div class="ulist">
<ul>
<li>
<p>syntax error: the file is not valid ADL - shown in red</p>
</li>
<li>
<p>validity error: the archetype semantics are not valid when validated against parent archetypes and the reference model - shown in orange</p>
</li>
<li>
<p>validity warning: the semantics are valid, but there are redundant elements or other small issues to correct - shown in yellow</p>
</li>
<li>
<p>passed - shown in green</p>
</li>
</ul>
</div>
</li>
<li>
<p>improved error reporting.</p>
</li>
<li>
<p>it now uses the reference model (RM) to validate all archetypes. The reference model is currently expressed in a custom meta-model format which is much simpler than UML 2 based meta-models, e.g. XMI (why?). The meta-model can be found here. Both the location of this file, and its design may change in the future, and its current format should not be taken as normative for openEHR.</p>
</li>
<li>
<p>RM attributes are now shown in the node map visualisation (differential form, flattened form). In the differential view, only attributes defined on the concrete class mentioned in the archetype are shown; in the flat view, all inherited attributes are shown.</p>
</li>
<li>
<p>A new test has been added to the test page that allows original ADL fles to be overwritten with the result of the flattening operation on archetypes. THIS IS EXPERIMENTAL and should be used with care - it will really overwrite ADL files, so be sure to use it in a version-controlled context, such as SVN (where you can conveniently then see diffs of the files). For this reason, both the 'Save ADL' and 'Save ADLS' tests now require checkboxes to be checked before they will operate. The intention of the new 'Save ADL' operation is to experiment with removal of some kinds of errors from legacy ADL fles.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_02_apr_2008_release_1_4_1_git_commit_5c0fdaf3f1f065028a93ba936ccb8f292aad31cf_was_svn_rev_599_tag_release_1_4_1"><a class="anchor" href="#_02_apr_2008_release_1_4_1_git_commit_5c0fdaf3f1f065028a93ba936ccb8f292aad31cf_was_svn_rev_599_tag_release_1_4_1"></a>14.13. 02 Apr 2008 Release 1.4.1 (Git commit 5c0fdaf3f1f065028a93ba936ccb8f292aad31cf (was SVN rev 599 / TAG Release-1.4.1))</h3>
<div class="ulist">
<ul>
<li>
<p>The Archetype workbench now functions as a compiler over the entire archteype 'directory' (the merged result of the reference and work repositories). With a single command (F7; build repository), all archetypes are compiled, and an error report built up which can be perused at any time. Slot relationships between archetypes are now shown, as are statistics for the repositories.</p>
</li>
<li>
<p>user history of archetypes visited;</p>
</li>
<li>
<p>The workbench now works using two kinds of files: differential 'source' files (.adls extension) and flat files (.adl extension). Previously, .adl files were treated as the source of all archetypes. There are now two kinds of files:</p>
<div class="ulist">
<ul>
<li>
<p>.adls file: this will become the 'source' file type for all archetypes.</p>
</li>
<li>
<p>.adl file: this will become the file type for the 'flat'  view of an archetype. In the future, .adl files will no longer be stored, but will be generated on the fly.</p>
</li>
</ul>
</div>
</li>
<li>
<p>for existing archetype repositories consisting of .adl files, the .adl file will be treated as the initial source. A .adls file will be generated once only for each .adl file, and from then on, the .adls file will be used as the source.</p>
</li>
<li>
<p>slot and used-by maps;</p>
</li>
<li>
<p>repository statistics;</p>
</li>
<li>
<p>numerous GUI improvements;</p>
</li>
<li>
<p>repository export to HTML.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_09_apr_2007_release_1_4_0_git_commit_f96c0eae57e6bb075e29fcc73937e5edb1799bd4_was_svn_rev_203"><a class="anchor" href="#_09_apr_2007_release_1_4_0_git_commit_f96c0eae57e6bb075e29fcc73937e5edb1799bd4_was_svn_rev_203"></a>14.14. 09 Apr 2007 Release 1.4.0 (Git commit f96c0eae57e6bb075e29fcc73937e5edb1799bd4 (was SVN rev 203)):</h3>
<div class="ulist">
<ul>
<li>
<p>Unicode support (see test/family_history archetype example in farsi);</p>
</li>
<li>
<p>improve speed of GUI display;</p>
</li>
<li>
<p>correct bugs with icon loading.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_05_mar_2007_bug_fix_release_git_commit_9b902757ecc66b4ecb1d1fe81f948e86130fb576_was_svn_rev_169"><a class="anchor" href="#_05_mar_2007_bug_fix_release_git_commit_9b902757ecc66b4ecb1d1fe81f948e86130fb576_was_svn_rev_169"></a>14.15. 05 Mar 2007 bug fix release (Git commit 9b902757ecc66b4ecb1d1fe81f948e86130fb576 (was SVN rev 169)):</h3>
<div class="ulist">
<ul>
<li>
<p>Support non-inclusive two-sided intervals (e.g. |0..&lt;1000|)</p>
</li>
<li>
<p>correct bug in parsing text terms used in C_CODE_PHRASE with ','</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_02_mar_2007_release_git_commit_1a997c27e546635dcd985ff8d64268cc1acf7809_was_svn_rev_166"><a class="anchor" href="#_02_mar_2007_release_git_commit_1a997c27e546635dcd985ff8d64268cc1acf7809_was_svn_rev_166"></a>14.16. 02 Mar 2007 Release (Git commit 1a997c27e546635dcd985ff8d64268cc1acf7809 (was SVN rev 166))</h3>
<div class="ulist">
<ul>
<li>
<p>Upgrade ADL workbench to process ADL 1.4 languages section, including translations - and display on 'description' tab</p>
</li>
<li>
<p>Performs various silent upgrades on strings to turn them into CODE_PHRASEs.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_10_jan_2007_release_git_commit_fbf7675841258413a3275e2ae738ccd65275c19b_was_svn_rev_152"><a class="anchor" href="#_10_jan_2007_release_git_commit_fbf7675841258413a3275e2ae738ccd65275c19b_was_svn_rev_152"></a>14.17. 10 Jan 2007 Release (Git commit fbf7675841258413a3275e2ae738ccd65275c19b (was SVN rev 152)):</h3>
<div class="ulist">
<ul>
<li>
<p>Repository merging - local and reference repositories can now be merged and viewed as one logical repository</p>
</li>
<li>
<p>Inheritance view - the node map now shows nodes as inherited, redefined or added.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_89_24aug2006_various_small_fixes"><a class="anchor" href="#_interim_release_subversion_89_24aug2006_various_small_fixes"></a>14.18. interim release subversion 89 - 24/aug/2006 - various small fixes</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>allow date constraint pattern <code>yyyy-mm-xx</code></p>
</li>
<li>
<p>added language to <code>COMPOSITION</code></p>
</li>
<li>
<p>added magnitude_status to <code>DV_QUANTITY</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_81_29jun2006_iso_8601_datetime_enhancements_fixes"><a class="anchor" href="#_interim_release_subversion_81_29jun2006_iso_8601_datetime_enhancements_fixes"></a>14.19. interim release Subversion 81 - 29/Jun/2006 - ISO 8601 date/time enhancements &amp; fixes</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>Implement openEHR ISO8601 deviation</p>
</li>
<li>
<p>allow 'W' to be included in durations containing 'Y', 'M' etc designators;</p>
</li>
<li>
<p>allow 'W' to be mixed in with other designators in ADL duration constraints;</p>
</li>
<li>
<p>improve error reporting in dADL and cADL parsers for intervals whose limits are not legal</p>
</li>
<li>
<p>Some small changes to enable reading unicode files - a BOM stripper for UTF-8 files, and UTF-8 character matching in the dADL scanner</p>
</li>
<li>
<p>Minor enhancements to ADL cmd line app.</p>
</li>
</ul>
</div>
</li>
<li>
<p>bugfixes</p>
<div class="ulist">
<ul>
<li>
<p>Fix bug where adding a constraint definition when multiple languages already defined caused crash;</p>
</li>
<li>
<p>Renamed <code>ONTOLOGY.remove_term</code> to remove_term_definition and remove_constraint to remove_constraint_definition, to be more obvious for developers.</p>
</li>
<li>
<p>Small correct to allow ISO Duration strings without the 'T' character to be silently fixed during by the cADL scanner;</p>
</li>
<li>
<p>Added a hardwired lower-case converter for ISO8601 Durations to avoid culture specific case conversion problems.</p>
</li>
<li>
<p>Corrected some errors in <code>ARCHETYPE.ontology_remove_unused_codes</code>;</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_63_14may2006_adl_1_4_compliance"><a class="anchor" href="#_interim_release_subversion_63_14may2006_adl_1_4_compliance"></a>14.20. interim release Subversion 63 - 14/May/2006 ADL - 1.4 compliance</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>all ISO date/time constraint patterns now include the 'T' where appropriate, but parser tolerates a space for the moment, and silently substitutes a 'T' on output</p>
</li>
<li>
<p>ISO8601 duration constraint patterns now possible. See basic_types archetype in test archetypes area for examples property attribute value in C_QUANTITY dADL sections now upgraded to <code>CODE_PHRASE</code> as defined by openEHR Archetype profile spec.</p>
</li>
<li>
<p>Existing archetypes with old form of property = &lt;"xxxxx"&gt; still parse but are silently converted to property = &lt;[openehr:xxxx]&gt; (note spaces converted to '_' as well)</p>
</li>
<li>
<p>clear_xxx routines added to <code>ARCHETYPE_DESCRIPTION</code> and <code>ARCHETYPE_DESCRIPTION_ITEM</code> to allow all list attributes (e.g. author, keywords, details, other_details etc) to be cleared in one go.</p>
</li>
<li>
<p>implemented 'adl_version' and 'controlled' markers in ADL files. Existing ADL files opened and saved with the ADL workbench or other tool using this parser will have the latest ADL version written into them.</p>
</li>
<li>
<p>added functions to <code>ARCHETYPE_ONTOLOGY</code> to remove terms and constraints completely.</p>
</li>
<li>
<p>added a function to <code>ARCHETYPE</code> to generate list of unused term and constraint codes, and to delete them from the ontology.</p>
</li>
</ul>
</div>
</li>
<li>
<p>bug fixes:</p>
<div class="ulist">
<ul>
<li>
<p>string values in dADL sections that wrap to start of next line now parse properly</p>
</li>
<li>
<p>all ISO date/time values in dADL and cADL now parse with proper 'P' and 'T' characters; if no 'T' present in value, it parses fine (for now) but a 'T' is included on output.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_47_02apr2006"><a class="anchor" href="#_interim_release_subversion_47_02apr2006"></a>14.21. interim release Subversion 47 - 02/Apr/2006</h3>
<div class="ulist">
<ul>
<li>
<p>bug fixes</p>
<div class="ulist">
<ul>
<li>
<p>fixed bug where Save on archetype opened from explorer tree had wrong directory removed leading whitespace in dADL text fields</p>
</li>
<li>
<p>fixed incorrectly generated logical paths in ARCHETYPE</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_46_27mar2006"><a class="anchor" href="#_interim_release_subversion_46_27mar2006"></a>14.22. interim release Subversion 46 - 27/Mar/2006</h3>
<div class="paragraph">
<p>All archetypes parse, save and reparse as expected except SOAP Headings.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>enhancements:</p>
<div class="ulist">
<ul>
<li>
<p>now can have two archetypes in memory at once, due to getting rid of current_archteype from SHARED_ARCHETYPE_CONTEXT object</p>
</li>
</ul>
</div>
</li>
<li>
<p>bug fixes:</p>
<div class="ulist">
<ul>
<li>
<p>rewrote Assertion expression rules, removed 96 reduce/reduce conflicts in the cADL parser;</p>
</li>
<li>
<p>fixed minor bug in path testing where a path ending in attr[obj_id] would match the OG structure when it should not</p>
</li>
<li>
<p>assertion expressions now parse properly with rewritten grammar for boolean_expressions.</p>
</li>
<li>
<p>dADL text containing newlines no longer cause crash; newlines are preserved through parsing.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_subversion_release_4_12_oct_2005"><a class="anchor" href="#_interim_subversion_release_4_12_oct_2005"></a>14.23. interim subversion release 4 - 12 Oct 2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>more efficient implementation of DT_OBJECT_CONVERTER, which now checks far fewer types when comparing generic types</p>
</li>
</ul>
</div>
</li>
<li>
<p>bugfixes</p>
<div class="ulist">
<ul>
<li>
<p>better structure of code with respect to use of SHARED_ADL_INTERFACE, which slved .Net DLL crash problem.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_subversion_revision_3_23_july_2005"><a class="anchor" href="#_interim_release_subversion_revision_3_23_july_2005"></a>14.24. interim release Subversion revision 3 - 23 July 2005</h3>
<div class="ulist">
<ul>
<li>
<p>changes:</p>
<div class="ulist">
<ul>
<li>
<p>library package structure significantly improved. Note that this will mean that .Net users will see that many classes are in a new namespace. The main change is that the am package is now populated as described in the Archetype Object Model (AOM) documentation.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre>++++++++++++++ move to subversion ++++++++++++++</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_57_23june2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_57_23june2005"></a>14.25. interim release BitKeeper cset 1.57 23/June/2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>implemented CR-000138 Archetype level assertions. Updated test cases, test archetypes.</p>
</li>
<li>
<p>minor improvements in open and save button behaviour in workbench GUI</p>
</li>
<li>
<p>in ASSERTION_FACTORY:</p>
<div class="ulist">
<ul>
<li>
<p>functions "create_expr_unary_operator_xxx" etc replaced by one function:
create_expr_unary_operator_node(an_operator: OPERATOR_KIND; an_operand: EXPR_ITEM): EXPR_UNARY_OPERATOR
    &#8201;&#8212;&#8201;operators with one operand, e.g. not x, -5 etc
   require
     an_operator_exists: an_operator /= Void
     an_operand_exists: an_operand /= Void</p>
</li>
<li>
<p>functions "create_expr_binary_operator_xxx" etc replaced by one function:
create_expr_binary_operator_node(an_operator: OPERATOR_KIND;
   a_left_operand, a_right_operand: EXPR_ITEM): EXPR_BINARY_OPERATOR is
    &#8201;&#8212;&#8201;operators with boolean results, e.g.
    &#8201;&#8212;&#8201;and, or, xor, etc
   require
     an_operator_exists: an_operator /= Void
     a_left_operand_exists: a_left_operand /= Void
     a_right_operand_exists: a_right_operand /= Void</p>
</li>
<li>
<p>java wrapper changes: "create_expr_binary_operator_xxx" etc replaced by one function:
create_expr_binary_operator_node (an_operator: INTEGER; h_a_left_operand, h_a_right_operand: INTEGER): INTEGER
  &#8201;&#8212;&#8201;REQUIRE
  &#8201;&#8212;&#8201;an_operator_exists: {OPERATOR_KIND}.is_valid_operator(an_operator)
  &#8201;&#8212;&#8201;a_left_operand_exists: a_left_operand /= void
  &#8201;&#8212;&#8201;a_right_operand_exists: a_right_operand /= void</p>
</li>
<li>
<p>"create_expr_unary_operator_xxx" etc replaced by one function <code>create_expr_unary_operator_node (an_operator: INTEGER; h_an_operand: INTEGER): INTEGER</code></p>
</li>
<li>
<p>codes for an_operator argument given in openEHR AOM specification - the new classes <code>OPERATOR_KIND</code> and <code>OPERATOR_TYPES</code> are added. To make a call to one of the above functions, an OPERATOR_KIND object needs to be created using the c# syntax which has the effect of doing <code>OPERATOR_KIND.make(integer value)</code> or <code>OPERATOR_KIND.make_from_string(string value)</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>bugs:</p>
<div class="ulist">
<ul>
<li>
<p>some bugs remain in the java wrapping; compiles ok, but runtime errors at assertion building. - More functions need to be wrapped for ARCHETYPE_DESCRIPTION, adding invariants to <code>ARCHETYPE</code> etc.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_release_arch_desc_bitkeeper_cset_1_56_19june2005"><a class="anchor" href="#_release_arch_desc_bitkeeper_cset_1_56_19june2005"></a>14.26. release 'arch_desc' BitKeeper cset 1.56 19/June/2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>implemented ARCHETYPE_DESCRIPTION class, parsing, and GUI view. Upgraded all test archetypes. - added new class DT_OBJECT_CONVERTER, which performs generic DT_ &lt;&#8594; object structure conversion. This enables the archetype description and any other dADL content to be converted automatically into objects, rather than requiring hand-built routines.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_50_01june2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_50_01june2005"></a>14.27. interim release BitKeeper cset 1.50 01/June/2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>News facility added: a news window will pop up the first time the workbench is used with a new version.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_49_30may2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_49_30may2005"></a>14.28. interim release BitKeeper cset 1.49 30/May/2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>DT structures (the internal representation of dADL sections) are all generically generated from objects and are used to generate objects. This means that C_QUANTITYs, the description section and so on of an archetype are all handled by the one piece of code now. The ontology section is slightly more complex, since its current modelling does not correspond strictly to the object types used in the class ARCHETYPE_ONTOLOGY. This will change in the future.</p>
</li>
</ul>
</div>
</li>
<li>
<p>bug fixes</p>
<div class="ulist">
<ul>
<li>
<p>numerous small bugs fixed.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_48_06may2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_48_06may2005"></a>14.29. interim release BitKeeper cset 1.48 06/May/2005</h3>
<div class="ulist">
<ul>
<li>
<p>bug fixes</p>
<div class="ulist">
<ul>
<li>
<p>implemented interval constraints of the form |100|, i.e. point intervals. Implemented for all ordered basic types, i.e. integer, real, date, date_time, time, duration. - enhancements - implemented assumed values for primitive types and domain types C_QUANTITY, C_CODED_TEXT, C_ORDINAL. C_PRIMITIVE and all subtypes, as well as C_DOMAIN_TYPE have assumed_value, default_value, has_assumed_value and set_assumed_value. Workbench GUI indicates assumed values.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_46_05_may_2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_46_05_may_2005"></a>14.30. interim release BitKeeper cset 1.46 - 05 May 2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>implemented assumed_value in primitive and domain types</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_39_25feb2005"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_39_25feb2005"></a>14.31. interim release BitKeeper cset 1.39 25/Feb/2005</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>C_QUANTITY now allows magnitude to be absent in inline dADL, meaning open magnitude, with unit still constrained - support dADL2 style syntax, including nested generics - change paths to include anonymous nodes - bug fixes - an error whereby archetypes with include and exclude lists sent the parser into an infinite loop is fixed. - empty C_DOMAIN_TYPE sections now parse, e.g. {C_QUANTITY &lt;&gt;} - embedded C_DOMAIN_TYPE sections with sibling non-C_DOMAIN_TYPE sections now parse properly</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_cset_1_38_19_jan_2005"><a class="anchor" href="#_interim_release_cset_1_38_19_jan_2005"></a>14.32. interim release cset 1.38 - 19 Jan 2005</h3>
<div class="ulist">
<ul>
<li>
<p>changes</p>
<div class="ulist">
<ul>
<li>
<p>complete JNI wrapping for ADL parser. Many fixes in parser. See <a href="http://www.deepthought.com.au" class="bare">http://www.deepthought.com.au</a> for documentation on JNI wrapping for Eiffel / C. - it is now recommended that users download the BitKeeper repository for this project, since it contains the proper java directory structure. - this directory still contains the correct DLL, but will be replaced in the near future by a proper distribution server.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_32_29_july_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_32_29_july_2004"></a>14.33. interim release BitKeeper cset 1.32 - 29 July 2004</h3>
<div class="ulist">
<ul>
<li>
<p>changes</p>
<div class="ulist">
<ul>
<li>
<p>CADL_FACTORY class routine create_archetype_slot replaced by two routines create_archetype_slot_anonymous and create_archetype_slot_identified</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_27_19_september_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_27_19_september_2004"></a>14.34. interim release BitKeeper cset 1.27 - 19 September 2004</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>finished inline dADL support for C_DOMAIN_TYPE subtypes; correctly serialises now; use of parantheses corrected - file names for serialisations other than ADL now replace the '.adl' extension at the end rather than just appending '.html', '.xml' or whatever..:wq - bug fixes - fix crash if icon not available (black square now shows, plus message indicating which icon missing).</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_25_05_may_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_25_05_may_2004"></a>14.35. interim release BitKeeper cset 1.25 - 05 May 2004</h3>
<div class="ulist">
<ul>
<li>
<p>changes</p>
<div class="ulist">
<ul>
<li>
<p>Renaming and re-arrangement of all classes and some attributes, as follows:</p>
<div class="ulist">
<ul>
<li>
<p>CADL classes</p>
<div class="ulist">
<ul>
<li>
<p>CADL_ITEM &#8594; ARCHETYPE_CONSTRAINT</p>
</li>
<li>
<p>CADL_OBJECT_ITEM &#8594; C_OBJECT</p>
</li>
<li>
<p>type_name &#8594; rm_type_name</p>
</li>
<li>
<p>CADL_NODE removed</p>
</li>
<li>
<p>CADL_REL_NODE &#8594; C_ATTRIBUTE</p>
</li>
<li>
<p>attr_name &#8594; rm_attr_name</p>
</li>
<li>
<p>CADL_CARDINALITY &#8594; CARDINALITY</p>
</li>
<li>
<p>CADL_OBJECT_NODE_REF &#8594; ARCHETYPE_INTERNAL_REF</p>
</li>
<li>
<p>CADL_OBJECT_NODE with is_archetype_ref = True &#8594; ARCHETYPE_SLOT</p>
</li>
<li>
<p>CADL_OBJECT_NODE with is_archetype_ref = False &#8594; C_COMPLEX_OBJECT</p>
</li>
<li>
<p>CADL_OBJECT_TERM_REF with is_reference = True &#8594; CONSTRAINT_REF</p>
</li>
<li>
<p>CADL_OBJECT_TERM_REF with is_reference = False &#8594; C_CODED_TERM</p>
</li>
<li>
<p>CADL_OBJECT_SIMPLE &#8594; C_PRIMITIVE_OBJECT</p>
</li>
<li>
<p>C_SIMPLE &#8594; C_PRIMITIVE</p>
</li>
<li>
<p>ADL_ASSERTION &#8594; ASSERTION</p>
</li>
</ul>
</div>
</li>
<li>
<p>DADL classes</p>
<div class="ulist">
<ul>
<li>
<p>DADL_ITEM &#8594; DT_ITEM</p>
</li>
<li>
<p>DADL_NODE removed</p>
</li>
<li>
<p>DADL_OBJECT_ITEM &#8594; DT_OBJECT_ITEM</p>
</li>
<li>
<p>type_name &#8594; rm_type_name</p>
</li>
<li>
<p>DADL_REL_NODE &#8594; DT_ATTRIBUTE_NODE</p>
</li>
<li>
<p>attr_name &#8594; rm_attr_name</p>
</li>
<li>
<p>DADL_OBJECT_NODE &#8594; DT_COMPLEX_OBJECT_NODE</p>
</li>
<li>
<p>DADL_OBJECT_LEAF &#8594; DT_OBJECT_LEAF</p>
</li>
<li>
<p>DADL_OBJECT_QUERY &#8594; DT_OBJECT_QUERY</p>
</li>
<li>
<p>DADL_OBJECT_SIMPLE &#8594; DT_PRIMITIVE_OBJECT</p>
</li>
<li>
<p>DADL_OBJECT_SIMPLE_LIST &#8594; DT_PRIMITIVE_OBJECT_LIST</p>
</li>
<li>
<p>DADL_OBJECT_SIMPLE_INTERVAL &#8594; DT_PRIMITIVE_OBJECT_INTERVAL</p>
</li>
</ul>
</div>
</li>
<li>
<p>DotNet classes</p>
<div class="ulist">
<ul>
<li>
<p>DOTNET_CADL_TREE_ITERATOR &#8594; DOTNET_ARCHETYPE_ITERATOR</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_27_19_september_2004_2"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_27_19_september_2004_2"></a>14.36. interim release BitKeeper cset 1.27 - 19 September 2004</h3>
<div class="ulist">
<ul>
<li>
<p>enhancements</p>
<div class="ulist">
<ul>
<li>
<p>finished inline dADL support for C_DOMAIN_TYPE subtypes; correctly serialises now; use of parantheses corrected</p>
</li>
<li>
<p>file names for serialisations other than ADL now replace the '.adl' extension at the end rather than just appending '.html', '.xml' or whatever.</p>
</li>
</ul>
</div>
</li>
<li>
<p>bug fixes</p>
<div class="ulist">
<ul>
<li>
<p>fix workbench crash if icon not available (black square now shows, plus message indicating which icon missing).</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_23_09_september_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_23_09_september_2004"></a>14.37. interim release BitKeeper cset 1.23 - 09 September 2004</h3>
<div class="ulist">
<ul>
<li>
<p>GUI fixes:</p>
<div class="ulist">
<ul>
<li>
<p>added option dialog; tool now asks for editor and repository path if no .cfg file found on startup, and writes settings to .cfg file in startup directory - specialisated archetypes have a differnt icon in archetype explorer - specialised archetype parent archetype id now shown in GUI - general GUI size &amp; widget cleanup * Bug fixes:</p>
</li>
<li>
<p>unused parent codes in specialised archetypes no longer generate warnings</p>
</li>
</ul>
</div>
</li>
<li>
<p>Enhancements:</p>
<div class="ulist">
<ul>
<li>
<p>ASSERTION-building factory routines exposed in interface</p>
</li>
<li>
<p>ontology sections all now save in sorted order of keys</p>
</li>
<li>
<p>ADL_INTERFACE has an attribute called openehr_version which contains the automatically version information from the software repository - useful for reporting bugs, using in 'about' window.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_3_1_30_29_july_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_3_1_30_29_july_2004"></a>14.38. interim release BitKeeper cset 1.3.1.30 - 29 July 2004</h3>
<div class="ulist">
<ul>
<li>
<p>added archetype explorer control on left side of tool</p>
</li>
<li>
<p>fixed error where empty term definition text caused crash</p>
</li>
<li>
<p>corrected validation of found use_node paths</p>
</li>
<li>
<p>corrected error where sibling object nodes with same code caused crash.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_bitkeeper_cset_1_3_1_22_05_may_2004"><a class="anchor" href="#_interim_release_bitkeeper_cset_1_3_1_22_05_may_2004"></a>14.39. interim release BitKeeper cset 1.3.1.22 - 05 May 2004</h3>
<div class="ulist">
<ul>
<li>
<p>re-engineered object models as described in draft ADL 1.2 manual (See openEHR website). This doesn&#8217;t affect standalong applications but does affect the DLLs.</p>
</li>
<li>
<p>added ADL keywords "allow_archetype", to replace "use_archetype", and "include" and "exclude" to define allowed and excluded sets of archetypes in an archetype slot.</p>
</li>
<li>
<p>slightly improved visual display in GUI tool with a new icon for 1:N attributes.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_mar2004_release_31_mar_2004_bitkeeper_cset_1_3_1_13"><a class="anchor" href="#_mar2004_release_31_mar_2004_bitkeeper_cset_1_3_1_13"></a>14.40. "mar2004" Release - 31 Mar 2004 (BitKeeper cset 1.3.1.13)</h3>
<div class="ulist">
<ul>
<li>
<p>separated out .Net DLL into its own toolkit</p>
</li>
<li>
<p>ADL language 1.1; ADL language manual 1.1</p>
</li>
<li>
<p>VB.net sources updated</p>
</li>
<li>
<p>mplements new interval syntax using "||".</p>
</li>
<li>
<p>implementation of clinical ADL types CODED_TEXT and ORDINAL conforming to syntax defined in version 1.1 of manual.</p>
</li>
<li>
<p>initial experimental XML output for OWL as save option in ADL workbench. THis will be rewritten next version!</p>
</li>
<li>
<p>many small bugs and limitations of DLLs fixed, allowing more powerful interrogation of the Archetype ontology in memory from any .net language, or any application natively using the Eiffel backend (i.e. any C/C++ app, or Java via JNI).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_06_feb_2004"><a class="anchor" href="#_interim_release_06_feb_2004"></a>14.41. interim Release - 06 Feb 2004</h3>
<div class="ulist">
<ul>
<li>
<p>ADL language 1.1; ADL language manual 0.9.9</p>
</li>
<li>
<p>fixed REAL output error where ".0" forgotten for round numbers</p>
</li>
<li>
<p>numerous small GUI fixes</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_interim_release_27_jan_2004"><a class="anchor" href="#_interim_release_27_jan_2004"></a>14.42. interim Release - 27 Jan 2004</h3>
<div class="ulist">
<ul>
<li>
<p>ADL language 1.0; ADL language manual 0.9.5</p>
</li>
<li>
<p>added intervals as data types in dADL</p>
</li>
<li>
<p>intervals now require "|" delimiters, e.g. "|100..200|", "|&lt;100|".</p>
</li>
<li>
<p>various minor bugs fixed in date/times, durations.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_jan2004_release_15_jan_2004"><a class="anchor" href="#_jan2004_release_15_jan_2004"></a>14.43. "jan2004" Release - 15 Jan 2004</h3>
<div class="ulist">
<ul>
<li>
<p>ADL language 0.95</p>
</li>
<li>
<p>Ontology model completely rewritten</p>
</li>
<li>
<p>now has its own functional interface independent of dADL. Tested with C# and VB through dotNet DLL build.</p>
</li>
<li>
<p>date/time types now have pattern-based constraint expressions</p>
</li>
<li>
<p>term references in cADL and dADL no longer need version id in terminlogy part - it is now optional; e.g. [ICD9AM::F72] can be used instead of [ICD9AM(2003)::F72]</p>
</li>
<li>
<p>introduction of clinical/scientific predefined type library, including constraint types ("c_" types) for:</p>
<div class="ulist">
<ul>
<li>
<p>Text, Coded_text, Code_phrase</p>
</li>
<li>
<p>Quantity, Ordinal, Countable</p>
</li>
<li>
<p>Partial_date, Partial_time, Partial_date_time New efficient syntax for coded term constraints: [terminology_id::code1, code2, code3, &#8230;&#8203;]</p>
</li>
<li>
<p>New efficient syntax for ordinals: 0|[local::at0003], 1|[local::at0004], 2|[local::at0005]</p>
</li>
</ul>
</div>
</li>
<li>
<p>improvements in GUI validator tree rendering of archetypes:</p>
<div class="ulist">
<ul>
<li>
<p>c_ordinals shown efficiently with codes and comments</p>
</li>
<li>
<p>c_terms shown efficiently with codes and comments</p>
</li>
</ul>
</div>
</li>
<li>
<p>presence of invariants indicated</p>
</li>
<li>
<p>integration of ADL back-end with Clinician&#8217;s Archetype Editor via dotNet: clinician-designed archetypes now save as regular ADL.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_initial_release_november_2003"><a class="anchor" href="#_initial_release_november_2003"></a>14.44. Initial Release - November 2003</h3>
<div class="paragraph">
<p>Basic validation functionality:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>basic primitive types String, Integer, Real, Boolean</p>
</li>
<li>
<p>simple version of constraints for primitive types Date, Time, Date_time</p>
</li>
<li>
<p>basic implementation of ontology section of archetype</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2020-02-11 08:52:04 UTC
</div>
</div>
<link rel="stylesheet" href="https://specifications.openehr.org/styles/pygments-default.css">
</body>
</html>